R1、RabbitMQ有啥用处?
(1)服务间异步通信
(2)顺序消费
(3)定时任务
(4)请求削峰
R2、RabbitMQ有哪些常用的工作模式?
- 工作模式(Work)
- 发布订阅模式(Fanout)
- 路由模式(Routing)
- 主题模式(Topic)
R3、如何保证RabbitMQ消息不被重复消费?
- 通过消费端处理,每条消息分配唯一的id,消费端在消费的时候验证,过滤掉重复的消息。
- 使用乐观锁实现,保证接口的幂等性。
R4、如何保证RabbitMQ消息的可靠传输?
-
发送端:
(1)开启Confirm模式(消息确认机制或者事务模式)。
(2)如果消息发送失败做补偿处理,记录日志重新发送等,确保消息最终发送成功。 -
队列:
(1)声明交换机,队列的时候设置持久化参数。
(2)发送消息的时候设置消息的持久化参数,队列消息持久化到磁盘上,即便是宕机,重启之后消息依旧还在。 -
接收端:
(1)接收端开启手动应答模式。
(2)确定消息处理完成,消费端再向队列确认消费,删除消息。
(3)消费端如果处理异常,记录日志,通过其他补偿机制处理,确保最终消息处理成功。
R5、RabbitMQ的交换机有哪些类型?
(1)fanout:如果交换器收到消息,将会广播到所有绑定的队列上
(2)direct:如果路由键完全匹配,消息就被投递到相应的队列
(3)topic:可以使来自不同源头的消息能够到达同一个队列。 使用 topic 交换器时,可以使用通配符
R6、Topic模式时,Routingkey中的#号和*号有什么区别?
- #号标识0个字符、1个字符、多个字符
- *号表示1个或者多个字符