我在Camel中有一个关于JMS的问题。
所以我正在使用某公司提供的JMS。但是这个JMS实现不提供池连接工厂。
Camel是否有默认的池连接实现?
或者它确实如此琐碎:
1)打开连接
2)公开会议
3)读/写消息
4)关闭会话
5)关闭连接
因为如果相信我的日志骆驼就像我在第二种情况下提到的那样。
感谢。
答案 0 :(得分:2)
Camel几乎使用JmsTemplate(来自Spring Framework)来发送消息。 ActiveMQs thoughts of JmsTemplate
基本上,除非底层Jms提供程序具有池连接工厂,否则您对“生成”方案是正确的。如果您在App Server中运行Spring或Camel,通常就是这种情况。
如果您设置了类似
的内容from("jms:queue:QUEUE.IN").to("somewhere:over/the/rainbow");
然后一个或多个正在进行的消费者将处于活动状态,而不是销毁每个消息的会话(如果您设置了事务,则仅提交消息)。还有可能为JMS请求/响应汇集响应侦听器。有关信息,请参阅camel.apache.org/jms。
但是你是对的,如果你有一个远程(非池)JMS提供程序并且从Camel频繁发送消息,这可能会有一些性能问题。
答案 1 :(得分:0)
使用spring CachingConnectionFactory。顺便说一句。你使用哪个JMS提供商?