Я пытаюсь отправить несколько методов по одному каналу на сервер RabbitMQ в конвейере, а затем дождаться соответствующих синхронных ответов.Я наблюдаю за следующим артефактом:
Конвейер клиентских запросов:
Exchange.Declare
-> Queue.Declare
-> Queue.Bind
-> Basic.Consume
-> Basic.Qos
Ответ сервератрубопровод:
Exchange.DeclareOk
-> Queue.DeclareOk
-> Queue.BindOk
-> Basic.QosOk
-> Basic.ConsumeOk
Обратите внимание, что ответ Basic.ConsumeOk
идет после Basic.QosOk
, даже если порядок запросов в конвейере былразные.Читая спецификации, я пришел к выводу, что между синхронным запросом и соответствующим ответом могут быть получены только асинхронные методы (Basic.Deliver
, Basic.Return
, Channel.Flow
,Connection.Close
, Channel.Close
).
В противном случае, если, например, я выдаю несколько Queue.Declare
запросов или даже Basic.Consume
запросов подряд, невозможно будет узнать, какой ответ соответствует каким запросам, еслипорядок не сохраняется.
Это считается нормальным?Мое понимание неверно?Или, может, конвейер не поддерживается RabbitMQ?