Недавно я столкнулся с проблемой с одной из популярных библиотек, реализующей клиентский протокол AMQP. Спецификация AMQP определяет синхронные и асинхронные сообщения. Проблема в том, что я отправил два синхронных запроса один за другим, не дожидаясь завершения первого, а сервер RabbitMQ ответил в обратном порядке. Библиотека ожидала, что ответы будут отправлены в том же порядке, что и отправленные запросы. Это ошибка в библиотеке или мое злоупотребление?Правильное поведение AMQP-клиента против синхронных сообщений
Вопрос заключается в следующем: должен ли клиент AMQP самостоятельно выполнять сериализацию синхронных вызовов?
Ниже приведены некоторые ссылки, которые я нашел связанные. В техническом документе [1], раздел 2.2.1, указано следующее:
Чтобы упростить обработку метода, мы определяем различные ответы для каждого синхронного запроса. То есть в качестве ответа для двух разных запросов используется метод . Это означает, что одноранговый узел, отправляющий синхронный запрос , может принимать и обрабатывать входящие методы до получения одного из действительных синхронных ответов. Этот отличает AMQP от более традиционных протоколов RPC.
Непонимание здесь заключается в том, означает ли автор, что обработка входящих методов ограничена асинхронными вызовами (например, basic_deliver) или включает также ответы на разные синхронные вызовы.
0 принять участие \t Я использую txamqp. Прямо сейчас у меня есть собственная исправленная вилка, которая просто возвращает ответ, если она не является ожидаемым ответом на асинхронный вызов. –