2017-09-04 48 views
0

在我的.NET应用程序的所有组件和ActiveMQ交互的最大数量,但处理一些消息后,它开始给错误:的ActiveMQ:已超过允许的客户端连接

无法接受连接:org.apache。 activemq.transport.tcp.ExceededMaximumConnectionsException:超出了允许的客户端连接的最大数量“。

我增加了web配置中的最大连接数,但它不工作。 我听说在这种情况下,您应该使用PooledConnectionFactory。 你们可以请你建议我们如何实现PooledConnectionFactory或者是否有任何其他的选择。

在此先感谢!

+0

我在ActiveMQ的配置文件中配置了10个连接,并且只使用了2个连接。虽然我正在从我的客户端应用程序中处理连接,但在一段时间后出现“超出允许的最大客户端连接数”的例外情况。无法确定它消耗10个连接的位置。我们可以通过哪种方式检查服务器现在连接ActiveMQ的地方的连接? – user2750155

+0

我在我的.Net应用程序中使用Apache.NMS dll,maximumConnections设置为1000,但是在连接器openwire部分的Active MQ控制台屏幕中,我只能看到100个连接。那为什么我得到这个例外。需要建议。 Thnx – user2750155

回答

0

尝试重新生成消息时以某种方式连接您的连接。比如,保持一个开放的连接而不是打开/关闭每条消息。

Spring.NET中提供了一个CachingConnectionFactory,可以简化此任务。

+0

我是否需要在ActiveMQ存在的服务器端实现此CachingConnectionFactory? 。 – user2750155

+0

没有客户端。我们的想法是不要为每个消息重新建立连接,而是尽可能重用现有连接。来自客户。 –

+0

首先,我不是一次又一次地创建连接。如果错误,我也处置它。通过Spring.NET走了,但我无法弄清楚如何在我的应用程序中实现CachingConnectionFactory。你有另外的其他链接来证明这件事。 – user2750155

0

首先,您可以配置代理在代理传输连接器配置中可以接受的连接数量,例如,在activemq.xml中

<transportConnectors> 
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000"/> 
</transportConnectors> 

1000连接应在ActiveMQ中的Apache发行配置的默认限制。 除非你有意想不到的低限,否则你的客户端应用程序可能会泄漏连接,这应该很容易使用netstat之类的命令进行验证。

我不是ActiveMQ的网管专家,但据我所知,是.NET

http://activemq.apache.org/nms/msdoc/1.6.0/vs2005/Output/html/N_Apache_NMS.htm

没有PooledConnectionFactory这是仅适用于Java的。 以前的回复是正确的,你应该尝试重新使用现有的连接到经纪人。连接创建被认为是一项繁重的操作。每次重新创建连接都是反模式,泄漏连接当然是一个错误。

+0

您能否告诉我在哪种情况下通常会出现此错误,或者我需要查看哪些区域来解决此错误。它不是经常性的,而是每周一次或两次复制。 – user2750155

+0

您应该可以使用netstat或类似的os级别命令来检查您在任何时间点与代理有多少连接。如果该数字达到您的代理配置中配置的maximumConnections限制,则会出现该错误。基于此尝试找出哪些客户端可能会打开比预期更多的连接,并检查他们的代码以分析如何更改它们以跨多条消息重新使用连接。 –

+0

我使用的是ActiveMQ的Apache.NMS dll。我们可以检查客户端是否达到了最大连接限制。然后我们可以释放/重置连接? – user2750155

相关问题