这类似于this other question但有点扭曲:我在规范中读到AMQP消息的消息ID应该由应用程序本身设置,所以理论上我可以使用它来保证一定程度的独特性,对吧?
我现在的主要问题是:在什么范围内,message-id被保证是唯一的?对于当前在特定队列中排队的消息?在所有队列?在宇宙之上? : - )
这种行为标准化了吗?我打算在这里使用RabbitMQ,但是有一些不是供应商特定的东西会很好: - )
感谢。
答案 0 :(得分:2)
另一个建议是根据dump pipes - smart endpoints学派的想法。
您可以使用某种共享状态处理应用程序中的唯一性。
从Gearman切换到RabbitMQ时遇到了同样的问题。我们使用memcached来跟踪发布的唯一消息ID,并且消费者丢弃消息ID已经存储在memcache中的消息(重复)。您还可以在将memcache完全放入队列之前检查它。
这使您无需在消息总线层中使用此功能(因此您可以更轻松地在代理之间切换,也可以在不保证唯一性的代理之间切换)
答案 1 :(得分:1)
消息ID 仅适用于特定应用,可能根本不是唯一的。你必须自己照顾独特性。