Наше приложение JMS Listener подключается к сети брокеров ActiveMQ через балансировщик нагрузки, который, как нам говорят, распределяет соединения между брокерами в циклическом режиме. Наше приложение весенней загрузки создает соединение через балансировщик нагрузки, который, в свою очередь, передает соединение одному из брокеров в сети брокеров. Если сообщение будет опубликовано посредникам, то было бы намного быстрее, если бы сообщение было на посреднике, на котором жило соединение прослушивателя JMS. Тем не менее, вероятность этого невелика, если мы не сможем распределить связи между брокерами.
Я пытался увеличить concurrency
в DefaultJmsListenerContainerFactory
, но это не сработало. Я думал о том, чтобы как-то расширить AbstractJmsListenerContainerFactory
и как-то создать Map
из DefaultMessageListenerContainer
экземпляров, но похоже, что createListenerContainer
вернет только экземпляр того, что параметризовано в AbstractJmsListenerContainerFactory
, и мы не можем его параметризировать с экземпляром Map
.
Мы используем Spring Boot 1.5.14.RELEASE.
== ОБНОВЛЕНИЕ ==
Я играл с вышеуказанными классами, и кажется, что в Spring JMS присуще, что Jms Listener связан с контейнером Single Message Listener, который, в свою очередь, связан с одним (потенциально общим) соединением ,
Для тех, у кого есть прослушиватели приложений JMS, которые подключаются к сети брокеров с балансировкой нагрузки, вы создаете одно соединение, которое подключается к одному брокеру, и, если да, испытываете ли вы значительное снижение производительности в результате сеть брокеров, которым приходится пересылать какие-либо входящие сообщения брокеру с потребителями?