我可以告诉camel jms端点在路由之间共享jms连接吗?

时间:2014-04-16 21:01:32

标签: spring jms apache-camel connection-pooling ibm-mq

我有一个app服务器,它运行多个从JMS队列读取消息的camel路由,每个路由都使用不同的选择器运行。

我们为每组客户提供了一个应用服务器。因此,最后会为队列创建多个连接。这似乎影响了队列的读写性能。

我尝试使用连接池(顺便说一句,我使用WMQ),我得到的最接近的是使用spring的CachingConnectionFactory(如本文how to configure (spring) JMS connection Pool for WMQ中所述)。

我希望每个应用服务器的连接数量都会减少,但这种情况并没有发生。即使我在CCFactory上将大小设置为5,我看到为队列创建了10个连接。根据CCFactory的文档,需要明确关闭连接。关闭从队列中读取的camel路由所使用的连接是否可能或甚至是否有意义?或者有没有办法告诉骆驼路线分享连接?我认为连接池和工厂的使用会这样做,但我没有看到发生这种情况。

我能实现我想要达到的目标吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你可以做的是只有一个路由从队列读取而不是很多,然后使用一些camel条件逻辑通过直接端点将消息重定向到正确的处理路由,另请参阅此example。< / p>

这样,队列中只有一个消费者,而不是每个运行它自己的选择器的多个消费者。