簡體   English   中英

自由jmsQueueConnectionFactory設置createConnection()超時

[英]Liberty jmsQueueConnectionFactory set createConnection() timeout

在我的應用程序中,我通過連接工廠的javax.jms.ConnectionFactory.createConnection()方法檢查我的MQ連接是否可用。

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)。 即使我沒有設置它,默認值也將是30s,明顯少於2分鍾:)

我在這里還缺少其他配置嗎?

親切的問候

雖然無法告訴您如何解決問題,但可以解釋為什么您嘗試的方法無效。 connectionManager元素配置連接池,其connectionTimeout是獲取池化連接時的超時,而不是建立新連接時的超時。 為了控制建立新連接的超時,您需要在properties.wmqJms上設置一個屬性(此屬性似乎不存在),但是即使那樣,它也無濟於事,因為您沒有知道您獲得的連接將是新建立的連接還是池連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM