Более одной JMS ConnectionFactory

Я новичок в JMS и в настоящее время разрабатываю простое приложение для чата, описанное в Oreilly «Служба сообщений Java». Я настроил TopicConnectionFactory в ActiveMQ, который получает сообщения чата от TopicPublishers и отправляет их TopicSubscribers.

Мой вопрос: «Зачем нам нужно создавать более одной TopicConnectionFactory» в любом приложении JMS? Поскольку экземпляры Connectionfactory не связаны с темой/очередью, почему мы не можем использовать один экземпляр ConnectionFactory для создания подключений ко всем темам (или очередям), настроенным в приложении?


person Vicky    schedule 18.03.2014    source источник


Ответы (2)


С технической точки зрения вы правы. Вы можете использовать только один ConnectionFactory.

Однако лучше использовать несколько ConnectionFactories в зависимости от ваших требований, чтобы трафик распределялся равномерно и у вас не заканчивались соединения.

Поэтому, если вы знаете о клиентском приложении JMS, которое может быть проблематичным (логика не позволяет правильно обрабатывать открытие/закрытие соединения), вы можете изолировать его, чтобы использовать собственную фабрику соединений.

Также некоторые фабрики соединений допускают пул из 10 активных соединений по умолчанию одновременно (это зависит от реализации/настроек). Если вам нужно больше, вы можете использовать более одной фабрики соединений.

person otc    schedule 18.03.2014

Я настроил TopicConnectionFactory в ActiveMQ, который получает сообщения чата от TopicPublishers и отправляет их TopicSubscribers.

Очень двусмысленное заявление. TopicConnectionFactory не получает и не отправляет никаких сообщений. Это всего лишь один из объектов администратора, используемых для создания Connection, который, в свою очередь, создает Session, который, в свою очередь, создает ваших издателей и подписчиков, которые публикуют и подписываются на сообщения.

почему мы не можем использовать один экземпляр ConnectionFactory для создания подключений ко всем темам (или очередям), настроенным в приложении?

Вы определенно можете. Вам никто не мешает это сделать.

Согласно спецификации

Объект фабрики соединений инкапсулирует набор параметров конфигурации соединения, определенных администратором. Клиент использует его для создания соединения с провайдером JMS.

Поэтому, если у вас нет разных требований к конфигурации, вы можете использовать один и тот же ConnectionFactory для создания нескольких подключений. И да, как упомянул выше otc, количество подключений является одним из параметров конфигурации.

person Aniket Thakur    schedule 19.03.2014