7

这与其他问题类似,但有一点不同:我在规范中读到 AMQP 消息的 message-id 应该由应用程序本身设置,所以理论上我可以使用它来保证一定程度的唯一性, 正确的?

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

这种行为是否标准化?我计划在这里使用 RabbitMQ,但是如果有一些不是供应商特定的东西会很好:-)

谢谢。

4

2 回答 2

2

另一个建议是根据转储管道 - 智能端点学派。

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

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

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

于 2015-07-23T14:31:20.277 回答
1

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

于 2013-07-17T13:01:07.653 回答