目录
1.你们项目中哪里用到了RabbitMQ
RabbitMQ是我们项目中服务通信的主要方式之一 , 我们项目中服务通信主要有二种方式实现 :
下面要结合自己的项目中功能来说两个地方
-
xxx
-
xxx
2、为什么会选择使用RabbitMQ
我们项目中之所以选择使用RabbitMQ,是因为它的功能比较丰富 , 支持各种消息收发模式, 支持延迟队列 , 惰性队列
而且天然支持集群, 保证服务的高可用, 同时性能非常不错 , 社区也比较活跃, 文档资料非常丰富
使用MQ有很多好处,简单跟您说几个:
当然使用使用MQ也有一些缺点
总之,瑕不掩瑜,使用了RabbitMQ之后可以大大提供程序的效率
3、使用RabbitMQ如何保证消息不丢失
消息从生产者发送到消费者接收,会经历多个过程 , 其中的每一步都可能导致消息丢失
大体可以分为这样几种情况:
针对每一步,RabbitMQ分别给出了解决方案:
通过RabbitMQ本身所提供的机制基本上已经可以保证消息不丢失, 但是因为一些特殊的原因还是会发送消息丢失问题 ,
例如 : 回调丢失 , 系统宕机, 磁盘损坏等 , 这种概率很小 , 但是如果想规避这些问题 , 进一步提高消息发送的成功率, 也可以通过程序自己进行控制
设计一个消息状态表 , 主要包含 : 消息id , 消息内容 , 交换机 , 消息路由key , 发送时间, 签收状态等字段 , 发送方业务执行完毕之后 , 向消息状态表保存一条消息记录, 消息状态为未签收 , 之后再向MQ发送消息 , 消费方接收消息消费完毕之后 , 向发送方发送一条签收消息 , 发送方接收到签收消息之后 , 修改消息状态表中的消息状态为已签收 ! 之后通过定时任务扫描消息状态表中这些未签收的消息 , 重新发送消息, 直到成功为止 , 对于已经完成消费的消息定时清理即可 !
4、消息的重复消费问题如何解决的
在使用RabbitMQ进行消息收发的时候,如果发送失败或者消费失败会自动进行重试,那么就有可能会导致消息的重复消费
解决方案:
5、如何解决消息堆积在MQ的问题
解决消息堆积有几种种思路:
6、RabbitMQ如何保证消费的顺序性
一个队列只设置一个消费者消费即可 , 多个消费者之间是无法保证消息消费顺序性的
7、RabbitMQ的延迟队列有了解过嘛
RabbitMQ的延迟队列有两种实现方案 :
8、RabbitMQ如何设置消息过期
RabbitMQ设置消息过期的方式有两种 :
注意 :
9、什么是死信交换机
死信交换机和正常的交换机没有什么不同,当一个包含死信
的队列使用dead-letter-exchange
属性,指定了一个交换机,这个交换机称为死信交换机
也就是说只有队列中的死信才会流转到死信交换机,而当一个队列中的消息满足下列情况之一时,就会成为死信:
一般的死信交换机还会再跟着一个专门的队列,用来专门存储所有的死信,以方便后期的人工干预
10、RabbitMQ的集群有哪些
RabbitMQ天然支持集群模式,它的集群有两种模式: