2012-10-28 45 views
1

我已经定义如下骆驼码头-ActiveMQ的路线的新的ActiveMQ连接:从( “码头:HTTP://0.0.0.0:8087/URL1”)是否骆驼码头-ActiveMQ的创建用于每个消息

。以(“ActiveMQ的:队列:队列1)

是否骆驼创建ActiveMQ的连接,然后使用由码头收到的所有邮件连接或创建每封邮件的ActiveMQ的连接

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

回答

1

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

正如您担心的那样,它会为每条消息创建并关闭连接+会话+制作者,这不是最佳的明智表现。

按照activemq component documentation中的建议,您应该将其设置为合并。然后你将重用连接/会话/制作者。

如果您打算仅将此路线用于此路线,您实际上只能在该游泳池的一个连接池中生活。

ActiveMQ制作了带有JMSTemplate的summary of tips and tricks。值得一读。

更新:关于有关的并发连接的数量:

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

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

这也可能是,在实际应用中,性能可能会通过使用一组有限的连接,而不是一上去一些小的程度,但你可能要测试出您的特定环境。

+0

谢谢佩特。这有助于理解。你为什么说“实际上只用一个连接就能生活”。听起来只有一个线程连接到activemq。那将是一个瓶颈。 jetty端点上的minThreads和maxThreads不能帮助创建从activemq池到多个代理的连接。请给出意见。 – techuser

+0

添加了更新来解释。您应该将Session视为主要“每个线程”对象,而不是连接。 –