在我的应用程序中,我检查我的MQ连接是否可用于连接工厂的方法javax.jms.ConnectionFactory.createConnection()
。
connection = connectionFactory.createConnection();
目前MQ防火墙已被阻止,因此未建立连接,我收到com.ibm.msg.client.jms.DetailedJMSException: MQJCA1011: Failed to allocate a JMS connection
。
我遇到的问题是,该方法的运行时间大约为2分钟。 我想将其设置为更低的值。该方法没有设置超时的参数,所以我认为它应该在应用服务器上设置。
我正在运行Liberty 18.0.0.1。
我的server.xml
看起来像这样:
<jmsQueueConnectionFactory id="myConnectionFactory"
jndiName="myJNDI" connectionManagerRef="ConMgr0">
<properties.wmqJms transportType="CLIENT" hostName="x.x.x.x"
port="1234" channel="myChannel" queueManager="myQmanager"
userName="myUSER" password="myPW" />
</jmsQueueConnectionFactory>
<connectionManager id="ConMgr0" maxPoolSize="10"
agedTimeout="0s" connectionTimeout="10s"/>
但是,连接管理器的选项connectionTimeout
不会更改此行为(保存值后重新启动Liberty)。即使我没有设置它,默认值也是30秒,显然不到2分钟:)
我在这里缺少其他一些配置吗?
亲切的问候
答案 0 :(得分:0)
虽然我不能告诉你如何解决这个问题,但我可以解释为什么你尝试的东西不起作用。 connectionManager元素配置连接池,其connectionTimeout是获取池连接的超时,而不是建立新连接时的超时。为了控制建立新连接的超时,你需要在properties.wmqJms上有一个属性(它似乎没有任何存在),但即便如此它也无济于事,因为你没有知道你得到的连接是新建立的连接还是池连接。