gpt4 book ai didi

spring-integration - 使用 WebSphere MQ 耗尽 JMS 连接

转载 作者:行者123 更新时间:2023-12-04 07:54:46 27 4
gpt4 key购买 nike

我已配置 CachingConnectionFactory包装了一个 MQTopicConnectionFactoryMQQueueConnectionFactory每个缓存大小设置为 10。

这些比在几个 jms:outbound-channel-adapter or jms:message-driven-channel-adapter 中使用作为我的应用程序中各种 spring 集成工作流程的一部分。

值得注意的是,当进程停止运行时,MQ channel 上的连接计数偶尔会达到允许的最大值(大约 1000)。这对于生产应用程序来说是一个严重的问题。

关闭应用程序不会减少连接数,所以看起来像 MQ 端的孤立连接?我不确定我的 spring jms/SI 配置中是否遗漏了可以解决此问题的任何内容,我们将不胜感激。

此外,我想记录从应用程序打开和关闭的连接,但看不到这样做的方法。

<bean id="mqQcf" class="com.ibm.mq.jms.MQQueueConnectionFactory">
//all that it needs host/port/ queue manager /channel
</bean>

<bean id="qcf" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref=" mqQcf "/>
<property name="sessionCacheSize" value="10"/>
</bean>


<bean id="mqTcf" class="com.ibm.mq.jms.MQTopicConnectionFactory">
//all that it needs host/port/ queue manager /channel
</bean>

<bean id="tcf" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref=" mqTcf "/>
<property name="sessionCacheSize" value="10"/>
</bean>

//Qcf and tcf are than used in spring integration configuration as required

最佳答案

您确实需要显示您的配置,但 Spring CachingConnectionFactory只创建一个为所有 session 共享的连接。开启 INFO创建新连接时,CCF 类别的日志记录会发出此日志...

if (logger.isInfoEnabled()) {
logger.info("Established shared JMS Connection: " + this.target);
}

编辑:

您的配置中没有任何突出的地方。正如我所说,每个 CCF 一次最多打开 1 个连接。

如果您有空闲时间,一种可能性是网络(交换机或防火墙)可能会在不通知客户端或服务器的情况下悄悄断开连接。下次客户端尝试使用其连接时,它将失败并创建一个新连接,但服务器可能永远不会发现旧连接已死。

通常,在这种情况下,启用心跳或保持连接将使连接保持事件状态(或至少让服务器知道它已死)。

关于spring-integration - 使用 WebSphere MQ 耗尽 JMS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786449/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com