2013-03-12 25 views
1

我有一个基于骆驼的应用程序,发布/订阅消息/从ActiveMQ的实例与喜欢的路线:如何以及在哪里检查某些Apache的骆驼设置

<from uri="activemq:myQueue" /> 

或:

<to uri="activemq:someOtherQueue" /> 

我试图确定是否在无意中将我的应用设置为“同步模式”,发生在以下任一情况下:

  • ActiveMQConnectionFactory#setAlwaysSyncSend是真的;或
  • 的“MessageProducer”被设定为“持续”

我相信,SANS骆驼,我将通常被手动设置这些属性。在这里介绍Camel作为ActiveMQ客户端,不知道如何/去哪里去找到这些属性的价值。有任何想法吗?提前致谢。

回答

1

通过将组件添加到传递给ActiveMQ组件的连接URI来添加组件时,可以配置这些值。骆驼网站上的这个documentation显示它是如何完成的。

ActiveMQ客户端执行一些自己的优化以在某些情况下选择使用异步同步来提高发送性能。这是documented here,值得一读。

所以,你会配置组件,当你通过代码添加这样的:

camelContext.addComponent("activemq", activeMQComponent("tcp://localhost:61616?jms.alwaysSyncSend=true")); 

的ActiveMQConnectionFactory配置选项都记录在详细here,适用于输送选项here

+0

感谢@Tim BISH (+1) - 嗯,我似乎现在正在某处。我发现ActiveMQ组件没有添加任何新选项,并且所有的[JMS选项](http://camel.apache.org/jms.html)都适用于ActiveMQ。所以,看着这些JMS选项,我看到一些*类似'alwaysSyncSend'(即'asyncConsumer','asyncStartListener'和'asyncStopListener'),但是我没有看到*任何类似于*一个'MessageProducer'。有任何想法吗?我感觉自己如此亲密,但在这里看到“穿过树林的森林”仍然很艰难。再次感谢! – IAmYourFaja 2013-03-12 10:54:03

+0

此外,'asyncConsumer'(听起来像* alwaysSyncSend *)*默认为'false'。因此,如果这是与'alwaysSyncSend'相对应的属性,并且我没有明确地将其设置为'true',那么这并不意味着我的客户端配置为“同步模式”? – IAmYourFaja 2013-03-12 10:55:41

+1

你能澄清一下你的问题吗?看看你真的想做什么?或者什么不按照你想要的方式工作?我很难理解你的问题,所以很难形成一个很好的答案。阅读我在AMQ客户端添加的链接,以及在某些情况下使用异步发送。大多数这些东西你通常不需要搞乱。 – 2013-03-12 13:58:08