RabbitMQ, RPC и сопоставление идентификаторов корреляции - PullRequest
0 голосов
/ 16 июня 2019

Я следую одному из учебных пособий RabbitMQ RPC (https://www.rabbitmq.com/tutorials/tutorial-six-dotnet.html) и немного запутался в сопоставлении идентификатора корреляции.

Обучающие состояния:

Этокогда используется свойство CorrelationId. Мы собираемся установить для него уникальное значение для каждого запроса. Позже, когда мы получим сообщение в очереди обратного вызова, мы рассмотрим это свойство, и на основании этого мы сможемчтобы сопоставить ответ с запросом. Если мы увидим неизвестное значение CorrelationId, мы можем безопасно отбросить сообщение - оно не относится к нашим запросам.

Но почему «безопасно» отбрасыватьсообщение после того, как мы уже израсходовали его из очереди? Как насчет клиента, который ожидает это сообщение? Разве сообщение не должно быть помещено в очередь для предотвращения потери?

1 Ответ

0 голосов
/ 16 июня 2019

звучит резонно.Но после подачи заявки не будет гарантировано, что отправитель исходного сообщения получит его.Без дополнительных знаний о настройке обменов, привязок и очередей трудно сказать, имеет ли смысл очередь или нет.

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

...