如何控制每个目标路由的camel线程(activemq主题)?

时间:2013-04-23 18:05:09

标签: apache-camel activemq apache-servicemix

我正在使用servicemix和camel发布一些activemq主题:

from("vm:all").recipientList().simple(String.format("activemq:topic:%s.%s.%s.%s.%s.%s","${header.type}", ...

但每个主题都会创建一个新的生产者线程,任何想法如何控制它?

EDIT1:

实际上我意识到我创建的主题太多而你应该选择选择器:http://www.andrejkoelewijn.com/blog/2011/02/21/camel-activemq-topic-route-with-jms-selector/

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

典型的情况是Camel正在使用JMSTemplate向ActiveMQ发送消息。这意味着它会创建一个新的producer each time。实际上,它为每条消息创建一个新的连接,会话和生产者。除了表现方面,这通常没有问题。

这通常由org.apache.activemq.pool.PooledConnectionFactory处理,它为您缓存连接,会话和生产者。但是,根据您的配置,它最初可能会创建“某些”生产者,但它们将被重用。

检查activemq-broker.xml中的连接工厂设置,并确保获取PooledConnectionFactory。