camel jetty-activemq是否为每条消息创建新的activemq连接

时间:2012-10-28 17:41:34

标签: java jetty activemq apache-camel

我已经定义了一个camel jetty-activemq路线,如下所示:

从( “码头:HTTP://0.0.0.0:8087 / URL1”)。要(“ActiveMQ的:队列:队列1)

camel是否创建了activemq连接,然后将该连接用于jetty接收的所有消息,或者为每条消息创建activemq连接。

我打算为activemq使用池化连接,因为我的消息流入速度非常高,我需要了解驼峰行为以定义最大连接池大小。

1 个答案:

答案 0 :(得分:1)

ActiveMQ组件以及JMS组件在发送消息时基于Spring Framework的JMSTemplate。

当你担心时,它会为每条消息创建和关闭一个连接+会话+生成器,这不是最佳的性能。

根据activemq component documentation中的建议,您应该使用池进行设置。然后,您将重用连接/会话/生成器。

如果您打算仅将此用途用于此路由,那么您实际上可以只使用池中的一个连接。

ActiveMQ使用JMSTemplate创建了summary of tips and tricks。值得一读。

更新:关于与并发相关的连接数:

简化,Connection是与代理的网络连接(“套接字”),在许多线程之间共享。您的每个线程仍然拥有自己的(池)会话,该会话使用共享连接并同时运行。如果您有多个ActiveMQ代理并希望在它们之间进行负载均衡,则多个连接仍然可以是增强功能(给定ActiveMQ是瓶颈而不是您的应用程序)。

failover:(ssl://host1:61616,ssl://host2:61616)

实际上,通过使用一组有限的连接而不是一个连接,性能可能会达到一定程度,但您可能必须测试您的特定环境。