【发布时间】:2014-03-07 20:49:25
【问题描述】:
假设我的消费者确认了,但由于一些奇怪的原因没有很好地处理消息。
是否有技术可以再次检查消息?
要求:
1. 相同的顺序。
2. 继续接收新消息并将它们放在队列的最后?
因此,不要重新排队(混乱顺序),比如将索引向后移动(如在 kafka 中)? 谢谢。
【问题讨论】:
标签: queue rabbitmq messaging messagebroker
假设我的消费者确认了,但由于一些奇怪的原因没有很好地处理消息。
是否有技术可以再次检查消息?
要求:
1. 相同的顺序。
2. 继续接收新消息并将它们放在队列的最后?
因此,不要重新排队(混乱顺序),比如将索引向后移动(如在 kafka 中)? 谢谢。
【问题讨论】:
标签: queue rabbitmq messaging messagebroker
1 - 相同的顺序与异步 AMQP 模型不兼容。
通常 RabbitMQ 以添加消息的顺序提供消息,但如果发生重新传递,该消息将尽快传递。此外,如果其中一条消息未得到确认,它也会尽快安排到客户端。
2 - Dead lettering 可以帮助你。
当然,您可以手动将消息添加回原来发布到的交换器,但这并不是所谓的最佳实践(好吧,它在某些情况下工作得很好)。但是您必须保护您的应用程序免受失败然后再次传递的循环消息的影响(至少,headres 为我解决了这个问题)。
【讨论】: