Подтвердить что ты не робот

Что лучше: PooledConnectionFactory или CachingConnectionFactory?

Мы используем Spring (3.2.4) с ActiveMQ (5.8.0) в Tomcat (7.0.41), и неясно, какое наилучшее использование. Мы хотим использовать JmsTemplate для создания и MessageListenerContainer для получения сообщений.

Должны ли мы использовать кеширование в стороне приемника? (связанная ссылка)
Работает CachingConnectionFactory с ActiveMQ и откатом? (связанная ссылка)
Нужно установить useAsyncSend = "true", когда мы используем PooledConnectionFactory? (связанная ссылка)

4b9b3361

Ответ 1

Из здесь:

Разница между PooledConnectionFactory и CachingConnectionFactory - это разница в реализации. Ниже приведены некоторые характеристики, которые различаются между собой:

  • Хотя и PooledConnectionFactory, и CachingConnectionFactory заявляют, что каждый из них соединяет соединения, сеансы и производители, PooledConnectionFactory фактически не создает кеш нескольких производителей. Он просто использует шаблон singleton для раздачи одного кэшированного производителя при запросе. В то время как CachingConnectionFactory фактически создает кеш, содержащий несколько производителей, и раздаёт один производитель из кеша при запросе.

  • PooledConnectionFactory построен поверх проекта Apache Commons Pool для объединения JMS-сессий. Это позволяет некоторое дополнительное управление пулом, поскольку в Commons Pool есть функции, которые не используются PooledConnectionFactory. Эти дополнительные функции включают в себя увеличение размера пула, а не блокирование, исключение при запуске пула и т.д. Вы можете использовать эти функции, создав свой собственный Commons Pool GenericObjectPool, используя свои собственные настраиваемые параметры, а затем передав этот объект в PooledConnectionFactory через комплектPoolFactory способ. Для получения дополнительной информации см. Следующие сведения: http://commons.apache.org/pool/api-1.4/org/apache/commons/pool/impl/GenericObjectPoolFactory.html

  • CachingConnectionFactory имеет возможность кэшировать пользователей. Просто нужно проявлять осторожность при использовании этой функции, чтобы вы знали, что потребители кэшируются в соответствии с правилами, указанными в сообщении в блоге.

  • Но самое главное, CachingConnectionFactory будет работать с любой совместимой с JMS MOM. Для этого требуется только подключение JMS factory. Это важно, если вы используете более одного поставщика MOM, который очень распространен в корпоративных организациях (в основном это связано с наследием и существующими проектами). Важным моментом является то, что CachingConnectionFactory отлично работает со многими различными реализациями MOM, а не только с ActiveMQ.

От здесь:

  • Если у вас есть кластерные ActiveMQ и используется переход на отказ, было сообщено, что CachingConnectionFactory не является правильным выбором.

  • Проблема, с которой я сталкиваюсь, заключается в том, что если одна коробка опускается, мы должны начать отправка сообщений с другой, но, похоже, все еще используется старый подключение (каждый отправляем раз вне). Если я перезапущу программу, itll подключитесь снова, и все будет работать. Источник: Проблема с автосоединением с ActiveMQ и CachingConnectionFactory

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

  • Если вы используете ActiveMQ сегодня, и, скорее всего, вы можете переключиться на другого брокера (JBoss MQ, WebSphere MQ) в будущем, не используйте PooledConnectionFactory, поскольку он плотно соединяет ваш код с ActiveMQ.