Вам когда-нибудь нужен идентификатор корреляции при использовании прямого ответа на RabbitMQs?

#rabbitmq

Вопрос:

Все, что я смог найти в Google, говорит о том, что из-за прямого ответа на корреляцию идентификатор больше не требуется для сопоставления конкретного запроса с конкретным ответом.

Но мне кажется, что вам явно все еще нужно это сделать, если есть возможность нескольких одновременных вызовов RPC. В таком сценарии, поскольку вы используете только один прямой ответ на псевдопросылку, невозможно определить, из какого RPC-вызова поступает ответ без идентификатора корреляции.

Правильно ли мое предположение?

Ответ №1:

Да, вы правы.

Когда несколько ответных сообщений в полете отправляются на один и тот же «адрес» (т. Е. в очередь), вам нужно что-то, чтобы отличить их друг от друга. reply-to является «адресом для ответа» [1]; разумные варианты включают настройку correlation-id («идентификатор корреляции приложения» [1]) как для сообщений запроса, так и для сообщений ответа или установку отдельного message-id [1] для каждого сообщения и упоминание запроса message-id в correlation-id ответе.

[1]: Полезная ссылка: раздел 1.8.1 (страница 42) аннотированной спецификации протокола AMQP 0-91 с комментариями RabbitMQ.