我有一个app服务器,它运行多个从JMS队列读取消息的camel路由,每个路由都使用不同的选择器运行。
我们为每组客户提供了一个应用服务器。因此,最后会为队列创建多个连接。这似乎影响了队列的读写性能。
我尝试使用连接池(顺便说一句,我使用WMQ),我得到的最接近的是使用spring的CachingConnectionFactory(如本文how to configure (spring) JMS connection Pool for WMQ中所述)。
我希望每个应用服务器的连接数量都会减少,但这种情况并没有发生。即使我在CCFactory上将大小设置为5,我看到为队列创建了10个连接。根据CCFactory的文档,需要明确关闭连接。关闭从队列中读取的camel路由所使用的连接是否可能或甚至是否有意义?或者有没有办法告诉骆驼路线分享连接?我认为连接池和工厂的使用会这样做,但我没有看到发生这种情况。
我能实现我想要达到的目标吗?
提前致谢。
答案 0 :(得分:1)
你可以做的是只有一个路由从队列读取而不是很多,然后使用一些camel条件逻辑通过直接端点将消息重定向到正确的处理路由,另请参阅此example。< / p>
这样,队列中只有一个消费者,而不是每个运行它自己的选择器的多个消费者。