Spring JMS в сервере приложений Wildfly

Я использую Spring-Boot-WAR, развернутый в Wildfly 14, и реализовал JmsListener, который подключен к очереди. JmsListener установил параллелизм на 5, и когда Spring-App запускается автономно, я вижу 5 параллельно работающих слушателей. Но в сочетании с Wildfly 14 работает только 1 слушатель.

В JEE я бы аннотировал MessageDrivenBean с помощью @Pool, а затем мог бы настроить максимальный размер пула для данного пула. Но я думаю, что Spring-Listener просто подключается к пулу MDB по умолчанию, размер которого равен 1.

Есть ли способ подключить JmsListener к конкретному пулу экземпляров bean-экземпляров? Или есть другой способ определить индивидуальный максимальный размер пула для этого JmsListener?

standalone.xml

JmsListener

          @JmsListener(destination = JMS_MESSAGE_NAME, concurrency = "5")
    public void receiveFromMessageQueue(Message msg) {
      ...
    }

1 ответ

На сервере приложений JEE спецификация JCA ограничивает количество сеансов JMS в соединении JMS до одного. В вашем развертывании Spring Boot у вас есть 5 одновременных потребителей в JmsListener. Это достигается наличием 5 сеансов JMS в одном соединении JMS, которым управляет контейнер прослушивателя Spring JMS.

Если вы создаете свою собственную фабрику соединений (не используя фабрики соединений Wildfly JCA), вы можете иметь несколько сеансов на одно соединение.

Другие вопросы по тегам