在使用 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 页)
我通过 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 页)