Mqrc q mgr name error 2058

Your program attempts to connect to WebSphere MQ and fails.

Troubleshooting

Problem

Your program attempts to connect to WebSphere MQ and fails.

Symptom

2058 0x0000080a MQRC Q MGR NAME ERROR

Cause

2058 is returned when connecting to a queue manager using the wrong queue manager name.

This is the most common cause, however there can be other reasons for this failure.

Resolving The Problem

Ensure that the queue manager name is specified correctly on:

  • MQCONN API calls
  • QREMOTE object definitions
  • Client connection channel definitions

Debugging QCF, TCF, or Client connection problems are much more complex.

  • Ensure that the connection request is routed to the intended machine and queue manager.
  • Verify that the listener program is starting the channel on the correct queue manager.
  • Ensure that the specifications for the client environment variables are correct.
  • mqserver
  • mqchllib
  • mqchltab

If you are using a client channel table (amqclchl.tab), then verify that your client connection channel definition has the correct queue manager name (QMNAME) specified.

Corrective actions:

  • Specify the correct queue manager name.
  • Correct channel routing problems.
  • Correct inetd listener configuration problems.
  • Correct client related configuration problems.

Example 1:
In this example, the sample program (amqsput) is used to put a message to queue (SVR.LQ) on queue manager (svr). Notice that it fails with reason code 2058. This failure occurs because the queue manager name is «SVR», not «svr».

Example 2:
After the queue manager name is corrected, this works as expected.

Example 3:
In this example the mqserver environment variable is used to configure a channel connection, from the client to the server, using channel(SYSTEM.DEF.SVRCONN). The client program (amqsputc) attempts to connect to queue manager(SVR), and to put a message to queue(SVR.LQ). This program fails with MQRC 2058, because queue manager(SVR) is not listening on port(1414); queue manager(HOBSON) was listening on port(1414).

Example 4:
After the mqserver is changed to include the correct listener port for queue manager(SVR), this works as expected.

2058 X’080A’ MQRC_Q_MGR_NAME_ERROR

On an  MQCONN  or  MQCONNX  call, the value specified for the QMgrName parameter is not valid or not known. This reason also occurs if the parameter pointer is not valid. (It is not always possible to detect parameter pointers that are not valid; if not detected, unpredictable results occur.)

On z/OS for CICS applications, this reason can occur on any call if the original connect specified an incorrect or unrecognized name.

This reason code can also occur if a WebSphere MQ client application attempts to connect to a queue manager within a WebSphere MQ-client queue-manager group (see the QMgrName parameter of  MQCONN ), and either:

    • Queue-manager groups are not supported.
    • There is no queue-manager group with the specified name.

Corrective action: Use an all-blank name if possible, or verify that the name used is valid.

For a complete list see API Reason Codes

[{«Product»:{«code»:»SSFKSJ»,»label»:»WebSphere MQ»},»Business Unit»:{«code»:»BU053″,»label»:»Cloud & Data Platform»},»Component»:»Configuration»,»Platform»:[{«code»:»PF002″,»label»:»AIX»},{«code»:»PF010″,»label»:»HP-UX»},{«code»:»PF012″,»label»:»IBM i»},{«code»:»PF016″,»label»:»Linux»},{«code»:»PF021″,»label»:»OpenVMS»},{«code»:»PF027″,»label»:»Solaris»},{«code»:»PF033″,»label»:»Windows»},{«code»:»PF035″,»label»:»z/OS»},{«code»:»PF038″,»label»:»z/VSE»}],»Version»:»8.0;7.5;7.1;7.0;6.0;5.3.1;3.0″,»Edition»:»»,»Line of Business»:{«code»:»LOB45″,»label»:»Automation»}}]

3 ответа

MQRC_Q_MGR_NAME_ERROR (2058) — общая ошибка (это было улучшено в последней версии wmq). Может возникнуть проблема с именем хоста или его разрешением, портом или даже именем канала или именем qmgr. Посмотрите внимательно на ошибки. Есть ли что-либо в /var/mqm/errors на сервере websphere 7?

Umapathy
28 фев. 2014, в 13:15

Поделиться

Если вы используете таблицу определения клиентских каналов (CCDT), это может означать, что имя менеджера очереди, которое вы использовали в MQCONN в вашем приложении, не было найдено как QMNAME на любом канале CLNTCONN в вашем CCDT. Иногда это может означать, что CCDT не найден вообще.

Конечно, иногда это все означает, что вы хотели установить MQSERVER на что-то и забыли, поэтому MQ Client ищет CCDT вместо этого и не находит ни одного из них.

Morag Hughson
15 сен. 2014, в 11:38

Поделиться

Я получил ту же ошибку. Несколько вещей, чтобы попробовать на основе моей отладочной сессии.

  • Проверить имя QueueManager. Обратите внимание, что он чувствителен к регистру. У меня это было в нижнем регистре в моем python script. Как только я поместил имя QueueManager заглавными буквами. Это сработало.
  • Проверьте, правильно ли указано имя узла очереди. Имя менеджера очереди и имя хоста очереди различны.
  • Проверьте, можете ли вы использовать telnet-хост на том порту, к которому вы пытаетесь получить доступ к очереди.
  • Перезапустить диспетчер очереди.
  • Перезапустите сервер приложений, с которого вы пытаетесь подключиться.
  • Проверьте, правильно ли указан канал связи.
  • Проверьте, правильно ли указаны имя очереди или имя псевдонима очереди.

Vikky
04 апр. 2017, в 20:27

Поделиться

Ещё вопросы

  • 0Селектор ввода Jquery по идентификатору
  • 1Группировка массивов и получение последнего и первого массива для каждой группы
  • 1Как я могу транслировать аудио Alaw?
  • 0Symfony 2 OneToMany отношения — неправильные результаты в ассоциации
  • 1Как реализовать детальное уведомление Android?
  • 1Как вставить подсказки в видео, которое я хочу воспроизвести, в моем приложении для Android?
  • 0reCaptcha не проверяет
  • 1на значке кнопки воспроизведения Android не изменится, пока песня не будет полностью воспроизведена
  • 1Мне действительно нужно использовать прототипы для этого в JavaScript? (Практический пример)
  • 0Не удается получить запрос LIKE, чтобы получить результаты записей за 2 и 4 цифры за год
  • 1Идентификация дочернего класса, вызывающего статическую функцию базового класса
  • 0Издевательский провайдер
  • 0Добавить класс с блесной, прежде чем двигаться дальше
  • 1Предварительно загрузить вид в Android?
  • 0Создание проекта Symfony
  • 0Обновление столбца на основе связи с другой таблицей
  • 1Хеш-карты и хеш-код, который изменяется, как определить, что объект изменился?
  • 1Selenium XPath в поиске GIF для нажатия
  • 0jQuery .html получает только последнее значение JSON
  • 0Встроенные проблемы с выравниванием div в Webkit?
  • 0установить срок годности элементов, загруженных другими серверами на моем сайте
  • 0Laravel 5 Internal Server Error 500 и TokenMismatchException для обновления базы данных с помощью AngularsJS
  • 1Проблемы при векторизации TFIDF токенизированных документов?
  • 0Плагин jquery-file-upload застрял в бесконечном цикле, повторно отправляя те же данные после 2 ГБ
  • 1Можно ли использовать параметры OleDBCommand в другом месте, кроме предложения Where?
  • 1NullPointerException при попытке добавить слой Orm с помощью Hibernate
  • 0Пользовательская функция cookie / сессии не работает
  • 0введите условие после выбора файла и обновите страницу, не используя кнопку отправки
  • 0Получение числа внутри кавычек
  • 1Ошибка времени выполнения IDataReader
  • 0Преобразование медленных левых соединений в союзы
  • 1OpenLayers: Как я могу перерисовать карту после сворачивания боковой панели?
  • 0вопрос подсказки загрузчика angular-ui
  • 0Supersized Slide — перейти к конкретному слайду по ссылке
  • 1Android Несколько анимаций
  • 0Могу ли я использовать функцию eval в этом случае?
  • 1Есть ли в Eclipse интерфейс хорошего качества «живописец» для Android?
  • 0JQuery: Использование панелей аккордеона, когда они видны, для переключения другого элемента, который не находится внутри аккордеона, путем показа и скрытия
  • 0Kraken API с помощью PHP-скрипта приводит к тому, что HTML-страница становится пустой
  • 1XAML Цвет фона Черный во время выполнения
  • 1Отслеживание, когда произошло x событий
  • 1Расширяет API для Android
  • 0Как правильно расположить DIVS на странице, чтобы
  • 0повторить с фильтром не обновляется
  • 0Jquery выбрать и отключить опцию, если только 2 варианта
  • 1CKEditor: игнорирование его config.js
  • 0мод переписать -new.php в / новый
  • 0Сохранить значение для каждого пользователя в цикле
  • 1Python извлечь отдельное слово в сложной строке
  • 0SQL пустая строка и COUNT

Вопрос:

Я испытываю странное поведение при выполнении базовых тестов подключения с моей рабочей станции на удаленный сервер MQ.

Я использую amqssslc.exe для подключения из командной строки.

Если я подключаюсь только к хранилищу сертификатов, он подключается без проблем и возвращает результат, указывающий, что он подключен к диспетчеру очереди по умолчанию, FOO:

C:Program FilesIBMMQToolscSamplesBin64>amqssslc.exe -k c:mycertscert

Sample AMQSSSLC start
Connecting to the default queue manager
No client connection information specified.
Using SSL key repository stem c:mycertscert
No OCSP configuration specified.
Connection established to queue manager FOO
Sample AMQSSSLC end

Однако, если я попытаюсь подключиться к диспетчеру очередей FOO, он возвращает ошибку 2058, которая обычно указывает на ошибку имени менеджера очереди.

C:Program FilesIBMMQToolscSamplesBin64>amqssslc.exe -k c:mycertscert -m FOO

Sample AMQSSSLC start
Connecting to queue manager FOO
No client connection information specified.
Using SSL key repository stem c:mycertscert
No OCSP configuration specified.
MQCONNX ended with reason code 2058

Он делает это, даже если я скопирую имя непосредственно из результата. Он не работает быстро и не генерирует запись в журнале AMQERR01.LOG.

Означает ли это поведение проблему с моим CCDT файлом?


Обновить:

По предложению @JoshMc я выполнил следующую команду, чтобы получить информацию о поставляемом поставщиком CCDT файле:

echo DIS CHL(*) QMNAME CONNAME|runmqsc -n

Результаты показали, что в файле диспетчера очереди не указано:

C:Program FilesIBMMQToolscSamplesBin64>echo DIS CHL(*) QMNAME CONNAME|runmqsc -n
5724-H72 (C) Copyright IBM Corp. 1994, 2016.
Starting local MQSC for 'MYQUEUE.TAB'.
1 : DIS CHL(*) QMNAME CONNAME
AMQ8414: Display Channel details.
CHANNEL(FOOCHANNEL)                CHLTYPE(CLNTCONN)
CONNAME(CONNAME(xxx.xxx.xxx.xxx(1414),xxx.xxx.xxx.xxx(1414))
QMNAME( )

No commands have a syntax error.

Лучший ответ:

Если вы просмотрите исходный код, расположенный в C:Program FilesIBMMQToolscSamplesBin64amqssslc.c вы увидите, что он выполняет следующие действия:

  1. Если имя менеджера очередей не задано, оно задает имя менеджера очереди NULL и распечатает Connecting to the default queue manager
  2. Если имя соединения не указано, он не будет настраивать ClientConn, а ConnectOptions.ClientConnPtr останется на нем значение по умолчанию NULL, оно будет печатать No client connection information specified.
  3. Если указан стебель хранилища ключей SSL, он установит значение SslConnOptions.KeyRepository для этого значения и распечатается с Using SSL key repository stem <stem location> SslConnOptions.KeyRepository Using SSL key repository stem <stem location> а затем укажите ConnectOptions.SSLConfigPtr в SslConnOptions.

После этого он выдает MQCONNX и задает имя менеджера очереди NULL и ConnectOptions. Поскольку ConnectOptions.ClientConnPtr остается со значением NULL по умолчанию, MQ попытается найти способ подключения к диспетчеру очередей несколькими другими способами. Порядок и информация о том, где он ищет информацию о подключении, задокументированы на странице Центра знаний IBM v7.5 (или более поздней) ” Подключение клиентских приложений IBM WebSphere MQ MQI к менеджерам очередей “. В вашем случае он подбирает файл CCDT.

Когда вы не укажете имя менеджера очереди, он ищет запись в CCDT с пустым атрибутом QMNAME и находит канал CLNTCONN который вы определили, где QMNAME пуст. QMNAME CLNTCONN канале CLNTCONN является особым случаем, когда клиент MQ будет подключаться к любому имени менеджера очередей, которое прослушивает CONNAME которое вы укажете. Поскольку вы указываете CLNTCONN репозитория ключей SSL, он будет использовать этот репозиторий ключей для подключения к MQ с SSLCIPH вы указали в CLNTCONN в CCDT.

Когда вы указываете имя очереди менеджер FOO, он пытается найти запись в CCDT с QMNAME набор атрибутов для FOO, в вашем случае это не существует, поэтому вы получаете 2058 или MQRC_Q_MGR_NAME_ERROR ошибку.


На основе вашего обновления канал CCDT имеет пустой атрибут QMNAME а CONNAME перечисляет два разных IP (PORT), CONNAME общим. В этой конфигурации MQ попытается сначала подключиться к первому IP-адресу, если соединение истечет или закончится по какой-либо другой причине, такой как канал в диспетчере очереди, находящийся в состоянии STOPPED, затем попытается подключиться ко второму IP-адресу.

Очень возможно, что они намереваются подключиться с пустым или NULL именем менеджера очереди из-за того, что клиент будет подключаться к любому имени менеджера очереди, которое прослушивает CONNAME, в этом случае первый IP (PORT) может быть диспетчер очереди FOO, а второй IP (PORT) может быть менеджером очередей BAR.


Если вы хотите работать с CCDT при указании -m FOO вам нужно будет либо создать новый CCDT с CLNTCONN канала с QMNAME(FOO), или добавить еще один CLNTCONN канал к существующему CCDT с QMNAME(FOO), обратите внимание, что вы не можете дублировать имена каналов в одном CCDT.


Для получения дополнительной информации о CCDT и имени диспетчера очереди укажите мой ответ на ” Подключение к IBM MQ с использованием файла CCDT в JMS “. Ответ был связан с JMS, но информация распространяется и на клиентов MQI.


У вас также есть возможность указать все данные в командной строке, как сказал Роджер. Запустить amqssslc.exe? для использования информации он должен выглядеть следующим образом:

Sample AMQSSSLC start
Parameters:  [-m QMgr]
  [-c ChlName -x ConnName]
  [-k KeyReposStem] [-s CipherSpec]
  [-p any|rfc5280]
  [-f] [-b none|128_bit|192_bit[,...] ]
  [-o OcspURL]

Ответ №1

Я испытываю странное поведение при выполнении базовых тестов подключения с моей рабочей станции на удаленный сервер MQ.

Это не программа. Вы не указали достаточно параметров. Вы выпустили “amqssslc.exe”? или посмотреть на источник? т.е. amqssslc.c

Где имя канала? Где имя соединения? Где CipherSpec? и т.д…

9.3.6. Добавление тестовых сообщений в очередь

Ниже рассказывается, как поместить в ранее созданную очередь сообщения с произвольным текстом при помощи WebSphere MQ Explorer и программы-примера amqsput для WebSphere MQ, работающей с менеджером очередей по умолчанию на данном компьютере.

Видно, что после добавления сообщений в очередь значение ее атрибута «текущая длина» ( CURDEPTH ) изменяется и отражает число добавленных сообщений. О просмотре этого атрибута см. в
«Обмен сообщениями с использованием WebSphere MQ: практическое введение»
.

Применение WebSphere MQ Explorer

Выполните следующие действия.

  1. Выделите папку Queues менеджера очередей host1/qm1, расположенную в папке Queue Managers в окне навигатора.
  2. Щелкните правой кнопкой строку queue1 в таблице и выберите команду Put Test Message – откроется одноименное окно.
  3. Введите в поле Message data текст сообщения.
  4. Щелкните Put message – поле Message data опустеет. Так можно ввести несколько тестовых сообщений; после ввода каждого сообщения щелкайте Put message.
  5. Щелкните Close, чтобы закрыть окно.
Применение программы-примера для WebSphere MQ

Примечание Путь к каталогу с примерами программ для WebSphere MQ должен быть добавлен к пути поиска в переменных окружения ОС.

Выполните следующие действия.

  1. Выполните следующую команду:

    Генерируется следующий вывод, после чего команда ожидает ввода пользователя:

    Sample AMQSPUT0 start
    target queue is queue1
  2. Введите сообщение и нажмите клавишу Enter. Так можно ввести несколько тестовых сообщений; после ввода каждого сообщения нажимайте Enter.
  3. Чтобы выйти, нажмите Enter, не вводя текста.

Примечание Если вы получаете сообщение об ошибке 2059 или 2058 (см. листинг ниже), проверьте, настроен ли менеджер очередей как менеджер по умолчанию (см.
«Обмен сообщениями с использованием WebSphere MQ: практическое введение»
) и работает ли он (командой dspmq ):

Sample AMQSPUT0 start
MQCONN ended with reason code 2059

Получив сообщение, подобное следующему, проверьте имена указанной в команде очереди (включая регистр символов) и созданного объекта, о просмотре имен см. в
«Обмен сообщениями с использованием WebSphere MQ: практическое введение»
.

Sample AMQSPUT0 start
target queue is QUEUE1
MQOPEN ended with reason code 2085
unable to open queue for output
Sample AMQSPUT0 end

Для толкования кодов возврата служит команда mqrc, принимающая код как параметр. Ниже показаны примеры вывода mqrc для кодов 2058, 2059 и 2085:

2058 0x0000080a MQRC_Q_MGR_NAME_ERROR
2059 0x0000080b MQRC_Q_MGR_NOT_AVAILABLE
2085 0x00000825 MQRC_UNKNOWN_OBJECT_NAME

Другие коды возврата MQCONN, MQOPEN и MQPUT также можно расшифровать с помощью mqrc. Подробнее о кодах возврата см. в разделе «API completion and reason codes» руководства WebSphere MQ Messages, GC34-6601.

9.3.7. Просмотр сообщений, добавленных в очередь

Здесь рассказывается, как осуществляется просмотр сообщений, находящихся в данный момент в очереди WebSphere MQ, без их удаления. Для просмотра доступно как содержимое сообщений, так и сведения о них, хранимые в дескрипторах сообщений.

Сообщения, добавляемые в очередь, являются непостоянными ( nonpersistent messages ). В поле reply-to queue manager сообщений автоматически записывается строка host1/qm1 менеджером, в чью очередь добавлены эти сообщения.

Сообщения, генерация которых описана в
«Обмен сообщениями с использованием WebSphere MQ: практическое введение»
, представляли собой дейтаграммы, то есть сообщения, не требующие ответа.

В силу этой причины значение reply-to queue не определялось WebSphere MQ Explorer или программой-примером amqsput при добавлении сообщения.

Сейчас мы воспользуемся интерфейсом WebSphere MQ Explorer либо программой-примером amqsbcg для WebSphere MQ.

Примечание Эти методы весьма удобны при разработке, тестировании и мониторинге очередей рабочих систем, поскольку такой метод просмотра никак не влияет на содержащиеся в очереди сообщения.

Применение WebSphere MQ Explorer

Выполните следующие действия.

  1. Щелкните правой кнопкой очередь в таблице менеджера очередей и выберите Browse Messages – откроется окно с индикатором хода операции, а затем окно Message browser.
  2. Каждая строка в таблице, отображаемой в окне Message browser, представляет одно из сообщений в очереди. В столбцах этой таблицы отображается информация о сообщении, которая находится в дескрипторе сообщения, а также содержимое или данные сообщения. Настраивая схему таблицы, можно изменять порядок столбцов, чтобы, например, переместить столбцы Persistence, Message type, Message data, Reply-to queue и Reply-to Queue Manager в начало таблицы.
  3. Некоторые типы сообщений лучше просматривать в виде двоичных данных, а не текста. Для этого дважды щелкните строку таблицы, представляющую сообщение, – откроется окно свойств сообщения. Щелкните секцию Data в этом окне.
Применение программы-примера для WebSphere MQ

Выполните следующие действия:

  1. Выполните следующую команду для просмотра сообщений в очереди менеджера по умолчанию; вывод команды будет перенаправлен в файл queue1.txt:
    amqsbcg queue1 > queue1.txt
  2. Откройте queue1.txt в любом текстовом редакторе. Для каждого из сообщений в файле содержатся сведения из дескриптора и содержимое в двоичном и текстовом (справа) представлении.

Читать сведения из такого файла сложнее, чем в WebSphere MQ Explorer. Разберем значение наиболее интересных полей вывода команды amqsbcg.

Тип 8 соответствует дейтаграммам. Запросы имеют тип 1, ответы – 2, отчеты – 4.

Значение «0» свидетельствует о том, что сообщение является непостоянным, а значение «1», напротив, говорит о том, что это сообщение является постоянным.

В этом поле отображается 48-значное имя очереди ответов (reply-to queue). Если в имени меньше 48 символов, недостающие символы заменяются пробелами, расположенными справа. Такие данные называются дополненными пробелами (blankpadded), они часто используются в структурах WebSphere MQ. В этом примере данное поле в дескрипторе сообщений пусто.

ReplyToQMgr : 'host1/qm1 '

Это поле содержит 48-значное дополненное пробелами имя менеджера очереди ответов (reply-to queue manager), оно автоматически заполняется менеджером очередей при размещении сообщения.

**** Message ****
length – 20 bytes
00000000: 5265 6462 6F6F 6B20 7465 7374 206D 6573   'Redbook test mes'
00000010: 7361 6765                     'sage '

Здесь отображается содержимое сообщения в двоичном и (справа) в текстовом представлении. Это существенно облегчает просмотр содержимого некоторых типов сообщений, особенно объемных, которые проще просматривать в двоичном представлении. Впрочем, содержимое простых тестовых сообщений из наших примеров как раз удобнее просматривать в текстовом представлении.

INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Thanks. We have received your request and will respond promptly.

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!

  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It’s Free!

*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

MQRC_Q_MGR_NAME_ERROR = 2058

MQRC_Q_MGR_NAME_ERROR = 2058

(OP)

7 Jul 03 13:19

I have a VB 6.0 Dll, which puts & gets messages from a MqSeries Queue. I use the following code to open a queue.
_________________________________________________________
Private Sub OpenConnectionToQueueServer(CompCode As Long, strMsg As String)
On Error GoTo ErrorHandler

    Dim Reason As Long        ‘reason code
‘  Dim O_options As Long     ‘open options
‘  Dim od As MQOD            ‘object descriptor
‘  Dim cnocd As MQCNOCD      ‘connect / channel definition

    strMsg = «Open Connection To Queue Server:»

   If gHcon = 0 Then
    MQCNOCD_DEFAULTS cnocd
    cnocd.ChannelDef.ChannelName = mstrQChannel
    cnocd.ChannelDef.TransportType = MQXPT_TCP
    cnocd.ChannelDef.QMgrName = mstrQmgr
    cnocd.ChannelDef.ChannelType = MQCHT_CLNTCONN
    cnocd.ChannelDef.ConnectionName = mstrQSvrnme
    ‘connect to the specified Queue Manager
    MQCONNXAny cnocd.ChannelDef.QMgrName, cnocd, gHcon, CompCode, Reason
    PutRCMsg (Reason)
    If CompCode = MQCC_WARNING Or CompCode = MQCC_OK Then
        CompCode = 0
        strMsg = strMsg & » OpenConnectionToQueueServer Connection Succeeded»
    Else
        ‘problem connecting
        CompCode = 1
        strMsg = strMsg & » OpenConnectionToQueueServer Connection Failed ReasonCode-» & mstrQReason
    End If

      Else
    CompCode = -1
    strMsg = strMsg & » Application Error»
  End If
Exit Sub

ErrorHandler:

    CompCode = -1
    strMsg = strMsg & » Runtime Error»
    Err.Raise Err.Number

   End Sub
____________________________________________________________

The problem I have is whenever I send a request I get a response, but if I immediately try to resend the same request I get a MQRC_Q_MGR_NAME_ERROR = 2058 error although none of the values have changed. Any help is highly appreciated.

Thanks,
-Arak-

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Join Tek-Tips® Today!

Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.

Here’s Why Members Love Tek-Tips Forums:

  • Tek-Tips ForumsTalk To Other Members
  • Notification Of Responses To Questions
  • Favorite Forums One Click Access
  • Keyword Search Of All Posts, And More…

Register now while it’s still free!

Already a member? Close this window and log in.

Join Us             Close

Простой способ исправить код ошибки 0X80070005

Я испытываю странное поведение при запуске базовых тестов подключения с моей рабочей станции на удаленный сервер MQ.

Я использую amqssslc.exe для подключения из командной строки.

Если я подключаюсь только к хранилищу сертификатов, он подключается без проблем и возвращает результат, указывающий, что он подключен к диспетчеру очередей по умолчанию, FOO:

C:Program FilesIBMMQToolscSamplesBin64>amqssslc.exe -k c:mycertscert Sample AMQSSSLC start Connecting to the default queue manager No client connection information specified. Using SSL key repository stem c:mycertscert No OCSP configuration specified. Connection established to queue manager FOO Sample AMQSSSLC end 

Однако если я попытаюсь подключиться к диспетчеру очередей FOO, он вернет ошибку 2058, которая обычно указывает на ошибку имени диспетчера очередей.

C:Program FilesIBMMQToolscSamplesBin64>amqssslc.exe -k c:mycertscert -m FOO Sample AMQSSSLC start Connecting to queue manager FOO No client connection information specified. Using SSL key repository stem c:mycertscert No OCSP configuration specified. MQCONNX ended with reason code 2058 

Это происходит, даже если я копирую имя прямо из результата. Он быстро выходит из строя и не создает запись журнала в моем файле AMQERR01.LOG.

Указывает ли такое поведение на проблему с моим файлом CCDT?


Обновить:

По предложению @JoshMc я выполнил следующую команду, чтобы получить информацию о файле CCDT, предоставленном поставщиком:

echo DIS CHL(*) QMNAME CONNAME|runmqsc -n 

Результаты показали, что в файле не указан администратор очередей:

C:Program FilesIBMMQToolscSamplesBin64>echo DIS CHL(*) QMNAME CONNAME|runmqsc -n 5724-H72 (C) Copyright IBM Corp. 1994, 2016. Starting local MQSC for 'MYQUEUE.TAB'. 1 : DIS CHL(*) QMNAME CONNAME AMQ8414: Display Channel details. CHANNEL(FOOCHANNEL) CHLTYPE(CLNTCONN) CONNAME(CONNAME(xxx.xxx.xxx.xxx(1414),xxx.xxx.xxx.xxx(1414)) QMNAME( ) No commands have a syntax error. 

Если вы просмотрите исходный код, расположенный по адресу C:Program FilesIBMMQToolscSamplesBin64amqssslc.c вы можете видеть, что он делает следующее:

  1. Если имя администратора очередей не указано, имя администратора очередей будет установлено на NULL и распечатать Connecting to the default queue manager
  2. Если имя подключения не указано, настройка ClientConn, а также ConnectOptions.ClientConnPtr остается по умолчанию NULL значение, он напечатает No client connection information specified.
  3. Если указана основа репозитория ключей SSL, он установит SslConnOptions.KeyRepository к этому значению и распечатайте Using SSL key repository stem а затем укажите ConnectOptions.SSLConfigPtr к SslConnOptions.

После всего этого он выдает MQCONNX и указывает NULL имя администратора очередей и ConnectOptions. Поскольку ConnectOptions.ClientConnPtr остается по умолчанию NULL value MQ попытается выяснить, как подключиться к диспетчеру очередей несколькими другими способами. Порядок и место поиска информации о подключении задокументированы на странице центра знаний IBM v7.5 (или новее) «Подключение клиентских приложений IBM WebSphere MQ MQI к администраторам очередей». В вашем случае он забирает файл CCDT.

Если вы не укажете имя администратора очередей, он ищет запись в CCDT с пустым QMNAME атрибут и находит CLNTCONN канал, который вы определили, где QMNAME пусто. Пустой QMNAME на CLNTCONN канал — это особый случай, когда клиент MQ будет подключаться к любому администратору очередей с именем, которое прослушивает CONNAME что вы укажете. Поскольку вы указываете основу репозитория ключей SSL, он будет использовать этот репозиторий ключей для подключения к MQ с помощью SSLCIPH вы указали на CLNTCONN в CCDT.

Когда ты делать укажите имя администратора очередей FOO, он пытается найти запись в CCDT с QMNAME атрибут установлен на FOO, в вашем случае его не существует, поэтому вы получаете 2058 или MQRC_Q_MGR_NAME_ERROR ошибка.


На основании вашего обновления на канале CCDT есть пустое поле. QMNAME атрибут и CONNAME перечисляет два разных IP (ПОРТА), разделенных общим. С этой конфигурацией MQ сначала попытается подключиться к первому IP-адресу, если время ожидания соединения истекло или завершилось по какой-либо другой причине, например, когда канал в диспетчере очередей находится в состоянии ОСТАНОВЛЕН, он затем попытается подключиться ко второму IP-адресу.

Вполне возможно, что они намереваются для вас подключиться с пустым или NULL именем администратора очередей из-за того преимущества, что клиент будет подключаться к любому администратору очередей с именем, которое прослушивает CONNAME, в вашем случае первый IP (PORT) может быть администратор очередей FOO, а второй IP (ПОРТ) может быть администратором очередей BAR.


Если вы хотите, чтобы он работал с вашей CCDT, когда вы указываете -m FOO вам нужно будет либо создать новую CCDT с CLNTCONN канал с QMNAME(FOO), или добавить другой CLNTCONN канал к существующей CCDT с QMNAME(FOO), обратите внимание, вы не можете иметь повторяющиеся имена каналов в одной CCDT.


Для получения дополнительной информации о CCDT и указании имени администратора очередей см. Мой ответ на «Подключение к IBM MQ с помощью файла CCDT в JMS». Ответ относился к JMS, но информация применима и к клиентам MQI.


У вас также есть возможность указать все детали в командной строке, как сказал Роджер. Бегать amqssslc.exe ? для информации об использовании это должно выглядеть так:

Sample AMQSSSLC start Parameters: [-m QMgr] [-c ChlName -x ConnName] [-k KeyReposStem] [-s CipherSpec] [-p any|rfc5280] [-f] [-b none|128_bit|192_bit[,...] ] [-o OcspURL] 
  • Спасибо за обстоятельный ответ. Файл CCDT был предоставлен поставщиком, поэтому мне нужно дождаться ответа от него, прежде чем я смогу подтвердить.
  • Я использую версию v9. Результаты, которые я получаю при выполнении предложенной вами команды, возвращают пустое имя QM. Означает ли это, что поставщик не включил необходимую информацию в предоставленный им файл CCDT? 5724-H72 (C) Copyright IBM Corp. 1994, 2016. Запуск локального MQSC для MYQUEUE.TAB. 1: DIS CHL (*) QMNAME CONNAME AMQ8414: отображение сведений о канале. CHANNEL (FOOCHANNEL) CHLTYPE (CLNTCONN) CONNAME (xxx.xxx.xxx.xxx (1414), xxx.xxx.xxx.xxx (1414)) QMNAME () Нет команд с синтаксической ошибкой.
  • Приношу свои извинения за форматирование — SO не поддерживает разрывы строк в комментариях.
  • Да, проблема решена. Я отмечу ваш как ответ и дополню свой вопрос дополнительной информацией. Спасибо за помощь.
  • 1 @kiprainey, рад, что это помогло. Я основываюсь на том, что CONNAME содержит два IP / порта, тогда вполне может быть, что каждая комбинация IP / PORT является другим QMNAME, и, указав пустое значение для этого значения, вы можете подключиться к любому администратору очередей. Я собираюсь очистить некоторые старые комментарии выше, которые относятся к вашему вопросу и моему ответу.

Я испытываю странное поведение при запуске базовых тестов подключения с моей рабочей станции на удаленный сервер MQ.

Это не программа. Вы не указали достаточно параметров. Вы запускали «amqssslc.exe?» или посмотреть исходник? т.е. amqssslc.c

Где название канала? Где имя подключения? Где CipherSpec? так далее…

  • 2 Можно подключиться вообще без параметров, например amqssslc.exe. Указанные вами параметры находятся в файле CCDT.
  • После того, как JoshMc объяснит вам это, вы решите ответить CCDT. Конечно, если вы использовали файл CCDT, тогда возникает вопрос: «Почему вы также не поместили в него хранилище ключей?».
  • В системах Windows на репозиторий ключей часто ссылаются как на переменную среды.

Tweet

Share

Link

Plus

Send

Send

Pin

Понравилась статья? Поделить с друзьями:
  • Mql5 ошибка 4752
  • Mql5 ошибка 10016
  • Mtg arena ошибка обновления
  • Mtg arena network error
  • Mta ошибка cd16 как исправить