IBM MQ Spring Boot JMS 在应用程序睡眠后重新连接

问题描述 投票:0回答:1

我有一个 Spring Boot JavaFX 应用程序(胖客户端),它使用 Spring Boot JMS 连接到 IBM MQ(JmsTemplate:简单配置 - 将其留给 Spring Boot)。 我在 application.properties 中设置了以下内容:

ibm.mq.queueManager = queuemanager
ibm.mq.channel = channel I am using
ibm.mq.connName = server to connect to
ibm.mq.user = user name
ibm.mq.password= the password
ibm.mq.queue = the queue to use
ibm.mq.reconnect=QMGR

应用程序启动时,跟踪日志显示以下内容:

2024-01-25 11:48:17:151 TRACE c.i.m.s.b.MQConfigurationProperties - constructor
2024-01-25 11:48:17:161 TRACE c.i.m.s.b.MQConnectionFactoryConfiguration - Creating caching MQConnectionFactory
2024-01-25 11:48:17:163 TRACE c.i.m.s.b.MQConnectionFactoryFactory - constructor
2024-01-25 11:48:17:163 TRACE c.i.m.s.b.MQConnectionFactoryFactory - createConnectionFactory for class MQConnectionFactory
2024-01-25 11:48:17:163 TRACE c.i.m.s.b.MQConfigurationSslBundles - SSLBundles are not supported
2024-01-25 11:48:17:163 TRACE c.i.m.s.b.MQConnectionFactoryFactory - configuring TLS Store system properties
2024-01-25 11:48:17:163 TRACE c.i.m.s.b.MQConnectionFactoryFactory - createConnectionFactoryInstance for class MQConnectionFactory
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConnectionFactoryFactory - configureConnectionFactory
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - queueManager    : XX_XXX_X
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - applicationName : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - ccdtUrl         : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - channel         : THE_CHANNEL
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - clientId        : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - connName        : THE_MQ_SERVER
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - reconnectOption : 'QMGR' [0x04000000]
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - sslCipherSpec   : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - sslCipherSuite  : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - sslKeyresetcount: -1
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - sslPeerName     : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - sslBundle       : null
2024-01-25 11:48:17:342 TRACE c.i.m.s.b.MQConfigurationProperties - tempModel       : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - tempQPrefix     : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - tempTopicPrefix : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - user            : 'XXXXXX'
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - password set    : YES
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - sslFIPSRequired        : false
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - useIBMCipherMappings   : true
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - userAuthenticationMQCSP: true
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - outboundSNI            : ''
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - channelSharing         : ''
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - balancingAppType       : '' [0]
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - balancingTimeout       : '' [-1]
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - balancingOptions       : '' [0]
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - jndiCF          : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - jndiProviderUrl : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - JKS keystore           : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - JKS keystore pw set    : NO
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - JKS truststore         : null
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - JKS truststore pw set  : NO
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - No additional properties defined
2024-01-25 11:48:17:343 TRACE c.i.m.s.b.MQConfigurationProperties - Pooling is disabled

应用程序运行时一切正常。现在,我们的用户在合上笔记本电脑的盖子时不会关闭应用程序。当他们打开笔记本电脑继续在应用程序中工作时,重新连接失败......

日志中显示以下内容:

nested exception is com.ibm.mq.MQException: JMSCMQ0001: 
IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2556' ('MQRC_RECONNECT_TIMED_OUT').

恢复的唯一方法是重新启动应用程序,之后一切都会恢复正常。知道我错过了什么吗?

spring-boot jms ibm-mq
1个回答
0
投票

默认的自动重新连接超时时间为 1800 秒(30 分钟),之后它将放弃。错误消息非常清楚,这就是您所看到的。

如果您想增加超时时间,那么 - 现在 - 您必须自己明确设置。它不是 Spring Boot Starter 中公开的外部配置选项。虽然我希望在未来的版本中添加它。

要设置它,您需要 CF 的自定义方法。在那方面,做

  cf.setIntProperty(WMQConstants.WMQ_CLIENT_RECONNECT_TIMEOUT,3600); // an hour
© www.soinside.com 2019 - 2024. All rights reserved.