2016-11-17 4 views
3

Я пытаюсь подключиться к Queue Manager с использованием MQ API, и я могу подключиться к очереди менеджеруMQ код ошибки 2058 при подключении к очереди менеджеру JMS

MQQueueManager queueManager=new MQQueueManager(qmgrName); 
queueManager.accessQueue(qName,MQOO_OUTPUT); 

Но когда я пытаюсь подключиться к одной и той же очереди менеджер, используя JMS он терпит неудачу с 2058 code.Not уверен, если я что-то отсутствует с JMS

MQQueueConnectionFactory qcf=new MQQueueConnectionFactory(); 
    qcf.setQueueManager(qmgrName); 
    qcf.setPort(1414); 
    qcf.setHostname("localhost"); 
    qcf.createQueueConnection(); 

ответ

1

У вас есть два или более менеджера очередей на локальном хосте. В первом примере вы подключаетесь в режиме привязок, поэтому менеджер очереди выбирается по имени, и вы получаете правильный. Во втором примере соединение выполняется по клиентскому соединению и поэтому принимается QMgr, прослушивающим 1414, которое не является тем, которое вы намереваетесь, поэтому соединение отклоняется.

Обратите внимание, что если оба QMgrs имеют прослушиватель на 1414, соединение будет успешным или неудачным, в зависимости от того, какой QMgr был запущен первым. Только один может привязываться к этому порту, чтобы первый из них начал использовать его. Это может привести к непоследовательному поведению.

См. Connection modes for IBM MQ classes for JMS, в котором говорится: «Чтобы изменить параметры подключения, используемые классами IBM MQ для JMS, измените свойство Connection Factory CONNOPT». Допустимые значения указаны на странице, но вы почти всегда хотите установить для стандартных привязок (MQCNO_STANDARD_BINDING).

1

Как документально here, MQRC 2058 означает недопустимое имя менеджера очередей или имя менеджера очередей неизвестна. Но, как вы заметили, соединение режима привязки с использованием MQ Base Java успешно, имя менеджера очереди выглядит действительным.

Update:

К сожалению, я был введен в заблуждение вашего кода и думал, что вы пытаетесь сделать соединение в режиме клиента с помощью JMS. Вам не нужно устанавливать хост и порт для подключения режима привязки.

Поскольку тип транспорта не установлен, используется значение по умолчанию, WMQ_CM_BINDINGS. Предложите проверить имя менеджера очереди.

+0

Я пытаюсь подключиться с использованием режима привязки только в JMS. Но он все еще не работает –

1

Для подключения к «BINDINGS» менеджер очереди должен быть локальным. Вы пытаетесь подключиться к удаленному диспетчеру очереди? Если это так, вам нужно будет подключиться как «КЛИЕНТ». Кроме того, убедитесь, что qmgr прослушивает указанный вами порт.