博主
258
258
258
258
专辑

第七节 RabbitMQ面试问题

亮子 2022-08-11 13:42:07 5375 0 0 0

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个或者多个字符