Повторное использование JMSContext в IBM MQ
Я пытаюсь повторно использовать JMSContext
отправлять несколько сообщений, используя один и тот же контекст, как показано в этом руководстве по IBM MQ.
context = cf.createContext();
destination = context.createQueue(QUEUE_NAME);
producer = context.createProducer();
for (int i = 1; i <= 5000; i++) {
try {
TextMessage message = context.createTextMessage("Message " + i + ".\n");
producer.send(destination, message);
} catch (Exception ignore) {}
}
context.close();
Скажем, в какой-то момент соединение обрывается. Будет ли контекст автоматически восстанавливаться, или мне нужно будет восстановить контекст снова?
ОБНОВИТЬ --
Вот как строится текущая фабрика соединений:
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(JmsConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = ff.createConnectionFactory();
cf.setStringProperty (CommonConstants.WMQ_HOST_NAME, config.getHost());
cf.setIntProperty (CommonConstants.WMQ_PORT, config.getPort());
cf.setStringProperty (CommonConstants.WMQ_CHANNEL, config.getChannel());
cf.setIntProperty (CommonConstants.WMQ_CONNECTION_MODE, CommonConstants.WMQ_CM_CLIENT);
cf.setStringProperty (CommonConstants.WMQ_QUEUE_MANAGER, config.getQueueManager());
cf.setBooleanProperty (JmsConstants.USER_AUTHENTICATION_MQCSP, false);
cf.setIntProperty (JmsConstants.PRIORITY, 0);
return cf.createContext();
2 ответа
Переподключение работает следующим образом (см. Также комментарий @JoshMc):
На клиенте установите параметр переподключения следующим образом:
cf.setIntProperty(CommonConstants.WMQ_CLIENT_RECONNECT_OPTIONS, CommonConstants.WMQConstants.WMQ_CLIENT_RECONNECT);
На сервере остановите администратор очередей следующим образом:
endmqm -r
Вы пробовали с созданием JMSContext
от существующего?
JMSContext#createContext(int sessionMode)
Это создаст новый JMSContext
но повторно используйте то же соединение.
Ссылка:
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.pro.doc/intro_jms_model.htm https://docs.oracle.com/javaee/7/api/javax/jms/JMSContext.html