Отправка и получение Spring AMQP с временными очередями с использованием потребителя noLocal

При отправке и получении с использованием временных очередей создается потребитель с атрибутом noLocal, установленным на true (см. _ 3_ строка метода 1297 версии 1.7.4.RELEASE).

Согласно javadocs для basicConsume метода, если для этого свойства установлено значение true, то "сервер не должен доставлять этому потребителю сообщения, опубликованные в соединении этого канала".

Теперь, насколько я могу судить, этот потребитель настраивается на фактическое получение ответного сообщения. Если я прав, то не следует ли вообще получать ответ не из-за того, что для свойства noLocal установлено значение true?

При использовании RabbitMQ в качестве брокера AMQP ответные сообщения принимаются нормально. Однако при использовании Apache Qpid ответ не получен. Фактически, он принимается только в том случае, если для свойства noLocal установлено значение false.


person Sarah Cassar    schedule 28.02.2018    source источник
comment
После некоторого дополнительного исследования я наткнулся на эту статью (rabbitmq.com/interoperability.html# qpid-python-tests), в котором указано, что RabbitMQ не поддерживает локальных потребителей. Тем не менее, вопрос остается в силе: если RabbitMQ поддерживает его, то следует ли получить ответ?   -  person Sarah Cassar    schedule 28.02.2018


Ответы (1)


Немного необычно иметь серверную часть, работающую в том же приложении, что и клиентскую сторону. Это единственный способ, которым no-local должен повлиять на этот сценарий, поскольку обычно клиентская сторона не публикует ответ.

Мы не заявляем о совместимости с QPID (конечно, не с AMQP 1.0), но я вижу, что QPID утверждает, что поддерживает AMQP 0.9.x, поэтому не стесняйтесь открывать Проблема JIRA, и мы рассмотрим, как позволит время.

person Gary Russell    schedule 28.02.2018
comment
Спасибо за ваш ответ. На самом деле это произошло во время весеннего теста загрузки, в котором qpid используется в качестве встроенного брокера amqp. Итак, в моем случае и сервер, и клиент работают в одном приложении. Я уже открыл проблему с github (github.com/spring-projects/spring -amqp / issues / 712). Этого было бы достаточно? - person Sarah Cassar; 28.02.2018