一:消息的发送流程

mq如何保证消息的幂等性

二、出现非幂等性的情况

1、生产者已把消息发送到mq,在mq给生产者返回ack的时候网络中断,故生产者未收到确定信息,生产者认为消息未发送成功,但实际情况是,mq已成功接收到了消息,在网络重连后,生产者会重新发送刚才的消息,造成mq接收了重复的消息

2、消费者在消费mq中的消息时,mq已把消息发送给消费者,消费者在给mq返回ack时网络中断,故mq未收到确认信息,该条消息会重新发给其他的消费者,或者在网络重连后再次发送给该消费者,但实际上该消费者已成功消费了该条消息,造成消费者消费了重复的消息;

三、解决办法

1、mq接收生产者传来的消息:

mq内部会为每条消息生成一个全局唯一、与业务无关的消息id,当mq接收到消息时,会先根据该id判断消息是否重复发送,mq再决定是否接收该消息。

2、消费者消费mq中的消息:

也可利用mq的该id来判断,或者可按自己的规则生成一个全局唯一id,每次消费消息时用该id先判断该消息是否已消费过。

 

 

 

相关文章:

  • 2021-06-15
  • 2021-12-06
  • 2021-12-17
  • 2021-12-20
  • 2021-07-08
  • 2021-11-25
  • 2021-11-19
猜你喜欢
  • 2021-10-10
  • 2023-01-05
  • 2021-11-30
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-11-28
相关资源
相似解决方案