RabbitMQ создает временную очередь, но не знает, как и когда

Я использую Mule ESB с двумя приложениями (одно публикует статус другому через rabbitMQ). ТОЛЬКО в моей производственной среде эти очереди amqp.gen- появляются, но они заблокированы, и я не вижу, что внутри них. Они привязаны к моей бирже (издателю).

Клиент указывает на это как на проблему потери случайных активов. Я пытаюсь предотвратить их появление, но понятия не имею. Согласно руководству rabbitMQ, они создаются, когда вы объявляете очередь, но не указываете имя. Однако я этого не делаю.

Дополнительная информация: два приложения используют разные логины для rabbitMQ, и очереди создаются моим приложением (издателем), а не приложением-потребителем. У меня нет имени очереди, и мое объявление очереди выглядит так:

<amqp:connector name="amqpConnector"
    host="${myApp.status_reporting.host}"
    port="${myApp.status_reporting.port}"
    username="${myApp.status_reporting.username}"
    password="${myApp.status_reporting.password}"
    requestedHeartbeat="${myApp.status_reporting.requestedHeartbeat}"
    doc:name="AMQP Connector for Status Messages"/>


<flow name="cwm_send" doc:name="cwm_send">
    <amqp:outbound-endpoint 
        exchangeName="${myApp.status_reporting.exchange_name}"
        exchangeType="topic"
        exchangeDurable="${myApp.status_reporting.exchange_is_durable}"
        routingKey="${myApp.status_reporting.routing_key}"
        connector-ref="amqpConnector" 
        doc:name="AMQP Out" 
        queueDurable="true" 
        responseTimeout="10000"
    />
</flow>

Как видите, имени очереди нет. просто ключ маршрутизации.

У меня такой вопрос: если к этому обмену нет очереди, соответствующей этому ключу маршрутизации, почему создаются эти временные очереди? Как мое приложение может получить заблокированные в них сообщения? Я что-то делаю не так с архитектурой?

Извините за открытые вопросы, но мне нужно с чего-то начать.


person dlite922    schedule 12.06.2015    source источник
comment
Не возражаете ли вы также поделиться конфигурацией amqp:inbound-endpoint?   -  person David Dossot    schedule 13.06.2015
comment
Это сделано в другом приложении. Нет исходного кода.   -  person dlite922    schedule 20.06.2015


Ответы (1)


outbound-endpoint не настроен exchange-pattern. IIRC по умолчанию request-response.

Учитывая, что заголовок REPLY_TO отсутствует, конечная точка решает создать временную очередь, отправить сообщение на обмен и подписаться на ответ во временной очереди.

Если вам не нужно такое поведение, просто добавьте exchange-pattern="one-way" к исходящей конечной точке.

person Víctor Romero    schedule 14.06.2015
comment
Спасибо. Я попробую это и дам знать, сработает ли это. - person dlite922; 20.06.2015