rabbitmq保证消息不重复消费,rabbitmq如何保证消息的可靠性

  rabbitmq保证消息不重复消费,rabbitmq如何保证消息的可靠性

  RabbitMQ如何保证消息不被重复消费以及消息的可靠性_ Blog _rabbitmq如何避免消息的重复消费?

  Yyds干货库存

  专长:全栈工程师、爬虫、ACM算法

  微信官方账号:浅谈知识

  RabbitMQ如何保证消息不被重复消费以及消息的可靠性汇总?

  这次全给他带走。

  食物来了。

  RabbitMQ如何保证消息不被重复消费?1:消息队列向生产者发送ACK消息过程中的问题

  ACK确认机制开启后,发送方发送消息后,消息队列发送ACK确认时,如果由于网络波动导致ACK消息丢失,发送方重复发送消息,导致消息重复。

  解决方案:使用计划任务redis。如果发送后没有收到ACK,请定期重新发送。在消息队列中,使用redis记录收到的消息。如果收到Redis存在的消息,说明你之前收到过,然后直接返回ACK。

  2.消费者向消息队列发送ACK消息过程中的问题

  消息队列将消息发送给消费者后,消费者在消费后将ACK返回给消息队列。如果由于网络问题没有收到ACK,消息队列将再次向消费者发送消息。如果消息之前已经被消费过,有两种解决方案可以防止消息的重复消费并确保幂等性。

  该消息携带全球唯一的id。当重复发送消息时,检查数据库中是否存在全局唯一id。使用redis记录使用的消息。当消息被消费时,使用redis来记录它们。当消息被重复消费时,可以直接返回ACK。RabbitMQ如何保证消息的可靠性、消息的持久性、消息队列打开消息的持久化机制?

  channel . queue declare(" queue . persistent . name ",true,false,false,null);

  第二个参数为true,表示durable=true

  ACK机制确保消息队列在发送方发送消息后发送ACK确认。在消息队列发送消息之后,消费者发送ACK确认。打开消息重试机制。当消息发送后没有正常消费时,发送方在某个事件后重新发送消息,因为有可能是上一次发送消息时,由于网络波动导致发送失败。

  打开死信队列。重复发送消息时,无法正常消费。将消息发送到死信队列,并手动干预消费失败的消息。

  以上总结是我对RabbitMQ如何保证消息不被重复消费以及消息可靠性的拙见。有问题请指正学习,希望有帮助。

  版权归作者所有:来自博客的原创作品,转载授权请联系作者,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: