在使用 RabbitMQs Direct Reply-To 时,您是否需要 correlation-id?

Do you ever need correlation-id when using RabbitMQs Direct Reply-To?

我通过 Google 找到的所有内容都表明,由于直接回复,correlation-id 不再需要将特定请求与特定响应相关联。

但在我看来,如果有多个并发 RPC 调用的可能性,您显然仍然需要这样做。在这种情况下,因为您只从单个直接回复伪队列中消费,所以没有相关 ID 就无法判断响应来自哪个 RPC 调用。

我的假设正确吗?

是的,你是对的。

当多个正在进行的回复消息被定向到同一个“地址”(即队列)时,您需要一些东西来区分它们。 reply-to 是“要回复的地址”[1];合理的选项包括在请求和响应消息上设置 correlation-id(“应用程序相关标识符”[1]),或在每条消息上设置不同的 message-id [1] 并提及请求的 message-id 在响应的 correlation-id 中。

[1]:有用的参考资料:the RabbitMQ annotated AMQP 0-91 detailed protocol specification.

的第 1.8.1 节(第 42 页)