经验教训:ActiveMQ、Apache Camel 和连接池

主要观点:讨论在使用ActiveMQCamelJMS时,连接池相关的一些易被忽视的问题及解决方法。
关键信息:

  • 打开到 ActiveMQ 代理的连接是相对昂贵的操作,应复用现有连接,避免每次发送或接收消息都打开和关闭连接,可使用连接池。
  • 示例配置展示了如何创建连接池和 JMS 配置,如<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">等。
  • 当使用Camelcamel-jms组件时,消费者会共享单个连接,可能导致创建会话的阻塞。
  • ActiveMQ 池实现使用commons-poolmaxActiveSessionsPerConnection映射到底层池的maxActive属性,每个连接的“键”会影响会话数量。
    重要细节:
  • 给出避免此类场景的经验法则,如了解生产者和消费者的操作及 TX 和 ACK 模式,调整最大会话参数,若生产者和消费者使用相同目的地需拆分连接池等。
  • 提到若有更多需求可参考Torsten关于Camel JMS with transactions – lesson learned的博客。
阅读 5
0 条评论