Мы используем Spring (3.2.4) с ActiveMQ (5.8.0) в Tomcat (7.0.41), и неясно, какое наилучшее использование. Мы хотим использовать JmsTemplate для создания и MessageListenerContainer для получения сообщений.
Должны ли мы использовать кеширование в стороне приемника? (связанная ссылка)
Работает CachingConnectionFactory с ActiveMQ и откатом? (связанная ссылка)
Нужно установить useAsyncSend = "true", когда мы используем PooledConnectionFactory? (связанная ссылка)
Что лучше: PooledConnectionFactory или CachingConnectionFactory?
Ответ 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.