Liberty jmsQueueConnectionFactory устанавливает время ожидания createConnection () - PullRequest
0 голосов
/ 14 мая 2018

в моем приложении я проверяю, доступно ли мое соединение 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 минут:)

Есть ли какая-то другая конфигурация, которую мне здесь не хватает?

С уважением

1 Ответ

0 голосов
/ 14 мая 2018

Хотя я не могу сказать вам, как решить проблему, я могу объяснить, почему то, что вы пробовали, не работает.Элемент connectionManager настраивает пул соединений, а его connectionTimeout - это тайм-аут при получении соединения в пуле, а не тайм-аут при установлении нового соединения.Чтобы контролировать время ожидания для установления нового соединения, вам понадобится свойство в properties.wmqJms (кажется, что для этого не существует), но даже в этом случае оно не поможет, потому что вы этого не делаете.знать, будет ли возвращаемое вами соединение новым соединением или соединением в пуле.

...