Apache Camel JMS: повторное использование потребителя при получении тайм-аутов - PullRequest
0 голосов
/ 22 января 2019

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

Решение верблюда настроено на использование транзакций, JmsTransactionManager и потребителей кэша.JMS-клиент при запуске создает потребителей в соответствии с concurrentConsumers и считывает сообщения из очереди до истечения времени ожидания (receivetimeout).С точки зрения клиента все работает нормально:

Журнал каждой попытки получения при возникновении тайм-аута:

  • Создание новой транзакции с именем [JmsConsumer [jms / IN_QUEUE]]: PROPAGATION_REQUIRED, ISOLATION_DEFAULT
  • Создана JMS-транзакция в сеансе [Кэшированный JMS-сеанс: weblogic.jms.client.WLSessionImpl@9220922] из соединения [Shared JMS-соединение: weblogic.jms.client.WLConnectionImpl@f400f4]
  • Инициированиефиксация транзакции
  • фиксация транзакции JMS в сеансе [Cached JMS Session: weblogic.jms.client.WLSessionImpl@9220922]

Но на стороне сервера журнал подразумевает, что JMSклиент создает и уничтожает новых потребителей, т. е. новый идентификатор потребителя, каждый раз, когда клиент получает тайм-аут при чтении очереди для сообщений.

Примечание. Если клиент JMS получает сообщение, т. е. нет тайм-аута, тот же потребитель в соответствии св журнал повторно.

Разве нельзя использовать транзакции и повторно использовать потребителей при получении тайм-аутов?

...