我有一个连接到MQ的Java客户端,队列管理器抱怨The maximum number of instances, 50, of channel 'CHAN' was reached
。
在哪里以及如何在客户端代码或属性中找到由Java客户端创建的实例数?
答案 0 :(得分:5)
您的应用程序每次连接到队列管理器都将导致一个新的通道连接(除非它共享连接-稍后再介绍)。如果您反复连接而没有断开连接,则可能会遇到您所描述的问题。
您可以使用以下MQSC命令(通过runmqsc
工具发出)来查看队列管理器上的所有通道连接:-
DISPLAY CHSTATUS(CHAN)
在您的情况下,似乎SVRCONN通道已配置为仅允许50个连接,然后发出您看到的错误。这是在SVRCONN通道的名为MAXINSTC(或可能为MAXINST)的属性上配置的。
如果您的SVRCONN通道配置了SHARECNV设置为10,则在创建第二个SVRCONN实例之前,您可能可以在一个SVRCONN通道实例上共享10个连接。这可能意味着您实际上已经建立了500个连接,然后才达到50个限制。通过将上面的命令扩展为:-
,可以查看SVRCONN通道的特定实例上使用的连接数。DISPLAY CHSTATUS(CHAN) CURSHCNV MAXSHCNV
查看您的Java应用程序代码,以查看是否在不需要和/或不断开连接时重复进行连接。将您的代码发布到问题中以获得更多帮助。