Liberty jmsQueueConnectionFactory设置createConnection()超时

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

在我的应用程序中,我检查我的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分钟:)

我在这里缺少一些其他配置吗?

亲切的问候

java-ee jms websphere-liberty
1个回答
0
投票

虽然我不能告诉你如何解决问题,但我可以解释为什么你的尝试不起作用。 connectionManager元素配置连接池,其connectionTimeout是获取池连接的超时,而不是建立新连接时的超时。为了控制建立新连接的超时,你需要在properties.wmqJms上有一个属性(它似乎没有任何存在),但即便如此它也无济于事,因为你没有知道你得到的连接是新建立的连接还是池连接。

© www.soinside.com 2019 - 2024. All rights reserved.