AMQP中每个队列的唯一消息?

时间:2009-10-29 08:30:01

标签: rabbitmq amqp

这类似于this other question但有点扭曲:我在规范中读到AMQP消息的消息ID应该由应用程序本身设置,所以理论上我可以使用它来保证一定程度的独特性,对吧?

我现在的主要问题是:在什么范围内,message-id被保证是唯一的?对于当前在特定队列中排队的消息?在所有队列?在宇宙之上? : - )

这种行为标准化了吗?我打算在这里使用RabbitMQ,但是有一些不是供应商特定的东西会很好: - )

感谢。

2 个答案:

答案 0 :(得分:2)

另一个建议是根据dump pipes - smart endpoints学派的想法。

您可以使用某种共享状态处理应用程序中的唯一性。

从Gearman切换到RabbitMQ时遇到了同样的问题。我们使用memcached来跟踪发布的唯一消息ID,并且消费者丢弃消息ID已经存储在memcache中的消息(重复)。您还可以在将memcache完全放入队列之前检查它。

这使您无需在消息总线层中使用此功能(因此您可以更轻松地在代理之间切换,也可以在不保证唯一性的代理之间切换)

答案 1 :(得分:1)

消息ID 仅适用于特定应用,可能根本不是唯一的。你必须自己照顾独特性。