qpid как настроить приемник

#java #messaging #qpid

#java #обмен сообщениями #qpid

Вопрос:

Я использую Apache Qpid, я смотрю на примеры, но нигде не могу найти, как настроить приемник таким образом, чтобы он не закрывал соединение и проверял, есть ли какие-либо новые сообщения в очереди.

Комментарии:

1. Используете ли вы default_container? Обработчик сообщений? Тогда приемники не будут закрыты, пока вы этого не сделаете. Когда у вас есть новое сообщение, вы должны получить его с помощью on_message .

2. @MertKoksal Я использовал примерный пример, там они описывают MessageConsumer , с ConnectionFactory помощью которого открывается и после 1000 ms истечения времени ожидания закрывается

Ответ №1:

Похоже, вы используете JMS-клиент Qpid. Его самые простые примеры, которые на самом деле просто показывают различные компоненты, доступные в JMS, и не являются репрезентативными приложениями (поскольку это будет полностью зависеть от того, что вы хотели сделать), имеют простой приемник, настроенный на выполнение синхронного вызова recieve() с таймаутом, так что он ждет так долгодля нового сообщения (отправленного другими битами примеров), и если ни один из них не поступает в течение времени ожидания, это означает, что все сделано, а затем завершается.

Если вы хотите дождаться сообщений, у вас есть различные варианты, такие как повторный вызов receive вместо выхода, как в примере, вызов recieve с большим тайм-аутом, чтобы избежать слишком быстрого истечения времени ожидания, или даже вызов recieve вообще без тайм-аута, чтобы он ждал следующего сообщения столько, сколько необходимо перед возвращением. В качестве альтернативы вы можете зарегистрировать асинхронный MessageListener для потребителя таким образом, чтобы прослушиватель вызывался по мере поступления для него сообщения.

Вы можете обратиться к любому руководству по JMS, чтобы получить более подробную информацию об этих концепциях.