2023年rabbitMq面试题汇总4(7道)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、如何保证消息的顺序性
1. 通过某种算法将需要保持先后顺序的消息放到同⼀个消息队列中(kafka中就是partition,rabbitMq中就是queue)。然后只⽤⼀个消费者去消费该队列。
2. 可以在消息体内添加全局有序标识来实现。
二、使⽤RabbitMQ增加rest服务吞吐量
三、RabbitMQ交换器有哪些类型
1. fanout交换器它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中
2. direct交换器direct类型的交换器路由规则很简单它会把消息路由到哪些BindingKey和RoutingKey完全匹配的队列中
3. topic交换器匹配规则⽐direct更灵活。
4. headers交换器根据发送消息内容的headers属性进⾏匹配由于性能很差不实⽤。常⽤的交换器主要分为以下三种
1、direct如果路由键完全匹配消息就被投递到相应的队列
2、fanout如果交换器收到消息将会⼴播到所有绑定的队列上
3、topic可以使来⾃不同源头的消息能够到达同⼀个队列。 使⽤topic交换器时可以使⽤通配符⽐如“*” 匹配特定位置的任意⽂本 “.” 把路由键分为了⼏部分“#” 匹配所有规则等。特别注意发往topic交换器的消息不能随意的设置选择键routing_key必须是由"."隔开的⼀系列的标识符组成。
四、RabbitMQ如何保证数据⼀致性
1. ⽣产者确认机制消息持久化后异步回调通知⽣产者保证消息已经发出去
2. 消息持久化设置消息持久化
3. 消费者确认机制消费者成功消费消息之后⼿动确认保证消息已经消费。
五、RabbitMQ消费者⾃动扩展数量
SimpleMessageListenerContainer可根据RabbitMQ消息堆积情况⾃动扩展消费者数量。
六、RabbitMQ结构
a. Broker简单来说就是消息队列服务器实体。
b. Exchange消息交换机它指定消息按什么规则路由到哪个队列。
c. Queue消息队列载体每个消息都会被投⼊到⼀个或多个队列。
d. Binding绑定它的作⽤就是把exchange和queue按照路由规则绑定起来。
e. Routing Key路由关键字exchange根据这个关键字进⾏消息投递。
f. vhost虚拟主机⼀个broker⾥可以开设多个vhost⽤作不同⽤户的权限分离。
g. producer消息⽣产者就是投递消息的程序。
h. consumer消息消费者就是接受消息的程序。
i. channel消息通道在客户端的每个连接⾥可建⽴多个channel每个channel代表⼀个会话任务。
七、rabbitmq队列与消费者的关系
1. ⼀个队列可以绑定多个消费者
2. 消息默认以循环的⽅式发送给消费者
3. 消费者收到消息默认⾃动确认也可以改成⼿动确认