【问题标题】:ActiveMQ durable subscriber with PooledConnectionFactory使用 PooledConnectionFactory 的 ActiveMQ 持久订阅者
【发布时间】:2014-10-12 05:11:08
【问题描述】:

我正在尝试实现一个场景,我必须在同一个应用程序中创建多个持久订阅者。我想将 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)。或者持久订阅者不应该与池连接工厂一起使用?

配置此类测试用例的正确方法是什么?

谢谢, 史蒂文

【问题讨论】:

    标签: spring activemq connection-pooling spring-integration


    【解决方案1】:

    通常不需要对侦听器容器使用任何类型的池/缓存,因为连接/会话是长期存在的。当连接或会话是短暂的并且反复创建/销毁时(例如发送消息时),缓存/池提供了主要好处。侦听器容器长时间保持其会话打开(取决于配置)。如果您将容器配置为每个会话仅处理有限数量的消息,则可以使用 Spring 的 SingleConnectionFactory(每个容器单独一个)来避免为每个会话创建新连接的开销。

    此外,对于持久订阅,clientId 设置在连接上,因此您真的不希望其他消费者获取已将其 clientId 设置为其他值的池连接。

    【讨论】:

    • 谢谢加里。我可以使用 ActiveMQConnectionFactory(每个容器一个工厂)吗?此外,当将 pooledConenctionFactory 与 maxConnection 一起使用时,持久订阅者可能会中断哪些情况?
    • 是的。我不明白你的第二个问题。我在答案中解释了池化的问题。
    • “侦听器容器保持其会话长时间打开(取决于配置)。”那些配置是什么,你能指点我那些配置吗?
    猜你喜欢
    • 2017-01-24
    • 2017-10-31
    • 2016-01-14
    • 2017-02-20
    • 1970-01-01
    • 2015-08-24
    • 2019-09-30
    • 2013-11-10
    • 2018-01-15
    相关资源
    最近更新 更多