Мы используем Spring (3.2.4) с ActiveMQ (5.8.0) в Tomcat (7.0.41), и неясно, какое лучшее использование. Мы хотим использовать JmsTemplate для создания сообщений и MessageListenerContainer для получения сообщений.
Следует ли использовать кеширование в приемнике? (related link)
Работы CachingConnectionFactory с ActiveMQ и откатом? (related link)
Нужно установить useAsyncSend = "true", когда мы используем PooledConnectionFactory? (related link)
Что лучше: PooledConnectionFactory или CachingConnectionFactory?
ответ
От here:
Разница между 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-соединений. Это важно, если вы используете более одного поставщика MOM, который очень распространен в корпоративных организациях (в основном это связано с наследием и существующими проектами). Важным моментом является то, что CachingConnectionFactory отлично работает со многими различными реализациями MOM, а не только с ActiveMQ.
От here:
Если вы группировались ActiveMQs, и использование отказоустойчивых транспорта было сообщено, что CachingConnectionFactory не является правильным выбором.
Проблема у меня в том, что если одна коробка идет вниз, мы должны начать отправки сообщений на другой, но, кажется, все еще используя старый соединение (каждый раз посылать вне). Если я перезапущу программу, будет снова подключиться, и все будет работать.Источник: Autoreconnect problem with ActiveMQ and CachingConnectionFactory
Проблема заключается в том, что кэшированные соединения с неисправным ActiveMQ было еще в использовании и создали проблему для пользователя. Теперь для этого варианта является PooledConnectionFactory.
Если вы используете ActiveMQ сегодня, и есть вероятность, что вы можете переключиться на какой-то другой брокер (JBoss MQ, WebSphere MQ) в будущем, не используйте PooledConnectionFactory, как это плотно пары ваш код ActiveMQ.
Это хорошее общее описание двух фабрик, но я бы добавил несколько комментариев: Должны ли мы использовать кеширование в стороне приемника? Я нашел в ActiveMQ в книге действий, что это необязательно. Работы CachingConnectionFactory с ActiveMQ и откатом? Ссылка «Autoreconnect problem ...» содержит 2 противоположных ответа, но кажется, что PooledConnectionFactory определенно будет работать, поэтому мы будем использовать это (мы не планируем использовать другую MOM). Нужно установить useAsyncSend = "true", когда мы используем PooledConnectionFactory? Мы все еще не знаем, но это не должно быть проблемой, если он установлен. :) – Krayo
Async отправляет: сообщает продюсеру, чтобы он не блокировал ожидание ack для каждое отправленное сообщение: http://activemq.apache.org/async-sends.html (думаю, это не должно быть проблемой) – united
I подумайте, что лучше задавать новые вопросы в другом вопросе;) – united
- 1. Что лучше использовать CachingConnectionFactory или кэшировать в DefaultMessageListenerContainer?
- 2. Для пружинного DefaultMessageListenerContainer, который рекомендуется ActiveMQConnectionFactory или ActiveMQ PooledConnectionFactory?
- 3. ActiveMQ PooledConnectionFactory без пружины
- 4. Что лучше? city.state.id или city.state_id
- 5. Что лучше .txt или .xml
- 6. Что лучше, Nagios или Sensu?
- 7. UDID или IMEI - что лучше?
- 8. Что лучше, ConfigObj или ConfigParser?
- 9. '__doPostBack' ИЛИ '.click()' Что лучше?
- 10. Magento или Prestashop, что лучше?
- 11. Html.fromHtml или Spannable, что лучше?
- 12. JSON или XML? Что лучше?
- 13. Что лучше QTP или Jmeter?
- 14. Что лучше, isset или нет?
- 15. Что лучше 'parent()' или 'parents()'?
- 16. Что лучше скрепки или CarrierWave?
- 17. Что лучше HBASE или Neo4j
- 18. Что лучше, C# или java?
- 19. Что лучше? OpenCyc или ConceptNet?
- 20. Что лучше: DataSet или DataReader?
- 21. мин или gzip, что лучше?
- 22. Темы или JMS Что лучше?
- 23. RTC или AccuRev, что лучше?
- 24. Что лучше: mysql_connect или mysql_pconnect
- 25. Что лучше, setEnabled или setUserInteractionEnabled?
- 26. Что лучше Math.random() или UIDUtil.createUID()
- 27. Что лучше, ETL или ELT?
- 28. Что лучше H2 или HSQLDB?
- 29. DataTable или IList? Что лучше?
- 30. Что лучше блокировать или делегировать?
Я использовал CachingConnectionFactory для производства сообщений (JmsTemplate) и потребления (DefaultMessageListenerContainer) в течение более года с весны (3.0.7), ActiveMQ (5.5.0) и Tomcat, а не испытывали каких-либо проблем. Как правило, мой потребитель обрабатывает сообщение из queue_1 и заканчивает публикацию сообщения queue_2, но взаимодействие в очереди использует тот же CachingConnectionFactory. – shuttsy