主要观点:讨论在使用ActiveMQ和CamelJMS时,连接池相关的一些易被忽视的问题及解决方法。
关键信息:
- 打开到 ActiveMQ 代理的连接是相对昂贵的操作,应复用现有连接,避免每次发送或接收消息都打开和关闭连接,可使用连接池。
- 示例配置展示了如何创建连接池和 JMS 配置,如
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
等。 - 当使用Camel的
camel-jms
组件时,消费者会共享单个连接,可能导致创建会话的阻塞。 - ActiveMQ 池实现使用commons-pool,
maxActiveSessionsPerConnection
映射到底层池的maxActive
属性,每个连接的“键”会影响会话数量。
重要细节: - 给出避免此类场景的经验法则,如了解生产者和消费者的操作及 TX 和 ACK 模式,调整最大会话参数,若生产者和消费者使用相同目的地需拆分连接池等。
- 提到若有更多需求可参考Torsten关于Camel JMS with transactions – lesson learned的博客。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。