我可以多次在AMQP中使用相同的相关ID吗?

时间:2011-04-05 11:05:49

标签: rabbitmq amqp

假设我有一个多个消费者正在收听的队列。我在队列上放了一个请求,其中一个消费者会处理它,然后把回复发给我。

现在,让我说我很不耐烦,如果一段时间后没有回复,我会发出另一个请求。

在这种情况下,我可以重复使用相同的相关ID吗?如果回复不止一次,我会忽略额外的回复。

对我来说听起来很合理,但只是想仔细检查一下它是不会弄乱AMQP的。

P.S。我正在使用RabbitMQ 2.4和rabbitmq-java-client 2.2

1 个答案:

答案 0 :(得分:1)

我有一种感觉很好。虽然我没有对RpcClient类做太多工作,但我相信它只会阻止等待相关回复消息出现在相应的回复队列中。因此,如果您从“客户端”应用程序中的另一个线程触发另一个具有相同ID的请求(导致最终出现相关回复),则将返回RpcClient调用。

当然,经纪人不关心,因为它应该只将相关ID作为不透明的消息属性传递。

如果您的请求可以多次重发,则应该注意您的请求是idempotent,直到它们成功为止。