1

我已经定义了如下骆驼码头-activemq 路线:

from("jetty:http://0.0.0.0:8087/url1").to("activemq:queue:queue1)

骆驼是否创建一个activemq连接,然后将该连接用于jetty接收到的所有消息,或者为每条消息创建一个activemq连接。

我计划为 activemq 使用池连接,因为我的消息每秒流入量非常高,我需要了解骆驼行为来定义最大连接池大小。

4

1 回答 1

1

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

正如您所担心的,它会为每条消息创建并关闭一个连接+会话+生产者,这并不是最佳性能。

按照activemq 组件文档中的建议,您应该使用池进行设置。然后你将重用连接/会话/生产者。

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

ActiveMQ 对JMSTemplate的技巧和窍门做了一个总结。值得一读。

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

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

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

也可能是,在实践中,通过使用一组有限的连接而不是一个连接,性能可能会在一定程度上有所提高,但您可能必须针对您的特定环境进行测试。

于 2012-10-28T21:54:16.420 回答