rabbitmq消息重复

场景

  • 可靠性投递机制:mq收到生产者消息,mq在返回confirm的时候网络出现闪断,导致broker未收到应答,导致发送两次。
  • MQ Broker服务与消费端传输消息的过程中出现网络抖动。
  • 消费端故障、异常。

解决方案

可靠性投递解决

对每条消息,MQ系统内部必须生成一个inner-msg-id,作为去重和幂等的依据,这个内部消息ID的特性是:
(1)全局唯一
(2)MQ生成,具备业务无关性,对消息发送方和消息接收方屏蔽
有了这个inner-msg-id,就能保证上半场重发,也只有1条消息落到MQ-server的DB中,实现上半场幂等。

消费抖动解决

业务消息体中,必须有一个biz-id,作为去重和幂等的依据,这个业务ID的特性是:
(1)对于同一个业务场景,全局唯一
(2)由业务消息发送方生成,业务相关,对MQ透明
(3)由业务消息消费方负责判重,以保证幂等


   转载规则


《rabbitmq消息重复》 wangyixin-tom 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
rabbitmq消息可靠性 rabbitmq消息可靠性
消息丢失场景消息从生产者写入到消息队列的过程问题原因:网络抖动 解决办法: 事务在生产者发送消息之前,通过channel.txSelect开启一个事务,接着发送消息, 如果消息投递失败,进行事务回滚channel.txRollback,然
2020-10-26
下一篇 
rabbitmq集群 rabbitmq集群
集群概述 集群节点类型 磁盘节点:运行时状态信息(集群、队列、绑定虚拟主机、用户、策略等)存储在内存和磁盘中。集群至少有一个磁盘节点。关闭集群后,重启时需要按照一定顺序启动。 内存节点:运行时状态信息(集群、队列、绑定虚拟主机、用户、策略等
2020-10-26
  目录