我正在尝试实现一个场景,我必须在同一个应用程序中创建多个持久订阅者。我想使用Spring默认消息监听器容器和ActiveMQ池连接工厂,其中“maxConnection”指定了所需的连接数。
但是我正在浏览一些帖子,这些帖子说不为持久用户使用池:
http://activemq.2283324.n4.nabble.com/durable-topic-subscriber-using-spring-and-atomikos-td3209848.html http://osdir.com/ml/java.activemq.user/2005-05/msg00141.html
我最近也看过很多关于这个的帖子。所以我的问题是: 客户端是否应在应用程序中使用上面指定的配置(pooledConnectionFactory以及为多个持久订阅者指定的maxConnection)。或持久用户不应该与池连接工厂一起使用?
配置此类测试用例的正确方法是什么?
谢谢, 史蒂文
答案 0 :(得分:2)
通常不需要对侦听器容器使用任何类型的池/缓存,因为连接/会话是长期存在的。当连接或会话短暂且重复创建/销毁(例如发送消息时)时,缓存/池提供了主要的好处。侦听器容器将其会话保持打开一段时间(取决于配置)。如果将容器配置为仅在每个会话中处理有限数量的消息,则可以使用Spring的SingleConnectionFactory
(每个容器单独一个)来避免为每个会话创建新连接的开销。
此外,对于持久订阅,clientId
在连接上设置,因此您实际上不希望其他某些使用者获取已将其clientId
设置为其他联盟的池连接值。