2012-04-27 88 views
1

我有一个关于骆驼JMS的问题。Apache Camel是否支持JMS的连接池?

所以我使用某些公司提供的JMS。但是这个JMS实现不提供Pooled连接工厂。

那么骆驼有默认的池连接实现?

或者它做不服琐碎等:

1)打开连接

2)打开会话

3)读/写消息

4)关闭会话

5 )关闭连接

因为如果相信我的话就像我在第二种情况中提到的那样,骆驼像骆驼一样。

谢谢。

回答

2

骆驼几乎使用JmsTemplate(来自Spring Framework)发送消息。 ActiveMQs thoughts of JmsTemplate

实质上,对于“生产”方案而言,您是正确的,除非底层Jms提供程序具有池化连接工厂。如果您在App Servers中运行Spring或Camel,通常就是这种情况。

如果设置了类似

from("jms:queue:QUEUE.IN").to("somewhere:over/the/rainbow"); 

然后一个或多个要去的消费者将是积极的,不是每个消息破坏会话(仅当您设置了交易的commiting消息)。还可以为JMS请求/响应池化响应侦听器。有关信息,请参阅camel.apache.org/jms

但是你是对的,如果你有一个远程(非池化)的JMS提供者并且会触发来自Camel的频繁发出的消息,这可能会带来一些性能问题。

0

使用spring CachingConnectionFactory。顺便说一句。您使用哪个JMS提供程序?

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/connection/CachingConnectionFactory.html

+0

我们正在使用[Solase](http://solacesystems.com/)。 CachingConnectionFactory适用于一次故障转移([link](http://singztechmusings.wordpress.com/2011/06/21/pooledconnectionfactory-vs-cachingconnectionfactory-which-one-is-a-perfect-match-for-spring-jmstemplate /)),但我们有几个。 – nkukhar 2012-04-30 10:44:14

+0

通常可以在jms连接字符串中配置故障转移。例如,在使用故障转移传输的ActiveMQ中:http://activemq.apache.org/failover-transport-reference.html。也许安慰也提供了这样的联系? – 2012-05-21 09:32:42