如何在WSO2 ESB中配置ActiveMQ连接池?

如何在WSO2 ESB中配置ActiveMQ连接池?,wso2,activemq,esb,Wso2,Activemq,Esb,我们正在使用WSO2 ESB对ActiveMQ进行直通代理。看来WSO2将为每个请求使用一个新的连接,这在一台机器上为我们提供了不理想的吞吐量500+并发用户。在深入阅读文档之后,我们发现可以将缓存与JMSSender配置一起使用。这确实通过在生产者级别进行缓存(包括连接和会话缓存)来提高吞吐量,但缺点是,如果Activemq机器被反弹,则WSO2不会重新连接,为了使其重新连接,则必须关闭缓存,从而使其对我们不可用 我很惊讶在WSO2 ESB中找不到任何ActiveMQ连接池设置。是否真的没有任

我们正在使用WSO2 ESB对ActiveMQ进行直通代理。看来WSO2将为每个请求使用一个新的连接,这在一台机器上为我们提供了不理想的吞吐量500+并发用户。在深入阅读文档之后,我们发现可以将缓存与JMSSender配置一起使用。这确实通过在生产者级别进行缓存(包括连接和会话缓存)来提高吞吐量,但缺点是,如果Activemq机器被反弹,则WSO2不会重新连接,为了使其重新连接,则必须关闭缓存,从而使其对我们不可用

我很惊讶在WSO2 ESB中找不到任何ActiveMQ连接池设置。是否真的没有任何针对使用WSO2 ESB的ActiveMQ连接池的配置,或者我们缺少一些明显的东西。创建自己的连接池工厂是这里的唯一选项吗

我们的配置: WSO2 ESB 4.8.0在自己的机器上,ActiveMQ 5.9在自己的机器上

附言 我们了解producer和activemq的优化,并应用了它们,在代理上使用nio协议,在producer和代理上配置传输级别参数,在同一台机器上对WSO2和activemq使用vm:,虽然这确实显著提高了吞吐量,但并没有使我们超越目标。我们真的需要弄清楚如何进行连接池。我们期望每秒处理10+k条消息,其中包含1.5k条消息的有效负载


感谢您的帮助。

如果WSO2包含生产者级别的池,并且问题是如果关闭,它将丢失与ActiveMQ的连接,那么我建议您在配置ActiveMQConnectionFactory时检查是否使用了故障转移:传输。由库可靠地重新连接


就您的目标吞吐量而言,假设消息是持久的,那么10Kmsgs/s听起来有点高。您应该测试ActiveMQ是否会在您的目标硬件上处理它,而不管WSO2是如何连接到它的。有关详细信息,请参阅。如果你做不到,有很多方法可以让你的表现达到这个水平,但那完全是另一回事。

谢谢杰克。我们的理解是,WSO2不包含任何关于ActiveMQ的池,它只是缓存。我们对ActiveMQ使用单机,所以不确定是否可以选择故障转移?我们已经使用持久队列测试了ActiveMQ,吞吐量在13-15k毫秒/秒之间,因此ActiveMQ不是瓶颈。如果您可以获得WS02使用的ConnectionFactory的句柄,您可以使用PoolgConnectionFactory包装标准ActiveMQ。哦,故障转移:当然是一个选项-如果针对单个代理使用,则传输提供简单的重新连接功能。谢谢,到目前为止,我们最终创建了一个包装器,在WSO2中使用PoolgConnectionFactory。然而,似乎有一个硬编码的限制10个连接,我们似乎不能增加。。。到目前为止,我们可以走得更低,并看到它正确地反映,所以我们的包装工作良好。看起来我们可能需要研究源代码才能达到这个极限。有什么线索吗?我们还将尝试故障转移,以查看重新连接是否针对单个代理工作。JMS连接类似于出站套接字。在实践中,你并不需要更多。使用它们发送的每个线程都需要自己的会话连接。createSession,WSO2可能已经将这两个概念和连接锁合并在一起了?您解决了问题吗?我这里也有类似的问题……不,我们抛弃了WSO2 ESB,转而使用Tomcat和ActiveMQ。