这与其他问题类似,但有一点不同:我在规范中读到 AMQP 消息的 message-id 应该由应用程序本身设置,所以理论上我可以使用它来保证一定程度的唯一性, 正确的?
我现在的主要问题是:该 message-id 在什么范围内保证是唯一的?对于当前在特定队列中排队的消息?在所有队列中?超越宇宙?:-)
这种行为是否标准化?我计划在这里使用 RabbitMQ,但是如果有一些不是供应商特定的东西会很好:-)
谢谢。
另一个建议是根据转储管道 - 智能端点学派。
您可以使用某种共享状态来处理应用程序中的唯一性。
从 Gearman 切换到 RabbitMQ 时,我们遇到了同样的问题。我们使用 memcached 来跟踪发布的唯一消息 ID 和消费者丢弃消息 ID 已存储在 memcache 中的消息(重复)。您还可以在将内存缓存完全放入队列之前检查它。
这使您无需在消息总线层中使用此功能(因此您可以更轻松地在代理之间切换,也包括那些不保证唯一性的代理)
消息 ID仅特定于应用程序,可能根本不是唯一的。你必须自己照顾独特性。