* * * * * * * * * * * * * * * * * * * * * 2278 MQRC_CLIENT_CONN_ERROR
Как вы обнаружили, потому что приложению не удалось найти канал, соответствующий указанному имени администратора очередей.
Ошибка 2540 MQRC_UNKNOWN_CHANNEL_NAME
вызвана тем, что установлено поле QMNAME
каналаSYSTEM.DEF.CLNTCONN
вы сейчас пытаетесь подключиться к SVRCONN
каналу с именем SYSTEM.DEF.CLNTCONN
, который не существует.
По умолчанию новый администратор очередей поставляется с таблицей каналов по умолчанию, найденной в следующем расположениив пути MQDATA: qmgrs/<QMGR_NAME>/@ipcc/AMQCLCHL.TAB
Таблица каналов по умолчанию содержит только один канал CLNTCONN
с именем SYSTEM.DEF.CLNTCONN
.Это предназначено только для отображения значений по умолчанию для вновь определенных CLNTCONN
каналов.
В администраторе очередей ваше клиентское приложение подключается к каналу SVRCONN
.На стороне клиента соединения, если вы используете CCDT, тип канала, который соединяется с администраторами очередей SVRCONN
, равен CLNTCONN
.
, так как вы подключаетесь к каналу SVRCONN
с именем DEV.ADMIN.SVRCONN
вам нужно определить CCDT с CLNTCONN
каналом с именем DEV.ADMIN.SVRCONN
.
. Я бы рекомендовал не изменять CCDT по умолчанию и вместо этого просто создать новый.
Вы можете использовать следующие шаги для создания CCDT:
echo "DEFINE CHL(DEV.ADMIN.SVRCONN) CHLTYPE(CLNTCONN) QMNAME(QM1) CONNAME(`localhost(1414)`)" | MQCHLLIB=/PATH/TO/CCDT MQCHLTAB=NAME_OF_CCDT runmqsc -n
Просто замените значения MQCHLLIB
и MQCHLTAB
фактическим путем и именем, которое вы хотите назвать CCDT, например:чтобы создать CCDT с именем AMQCLCHL.TAB
в /tmp
, используйте следующую команду:
echo "DEFINE CHL(DEV.ADMIN.SVRCONN) CHLTYPE(CLNTCONN) QMNAME(QM1) CONNAME(`localhost(1414)`)" | MQCHLLIB=/tmp MQCHLTAB=AMQCLCHL.TAB runmqsc -n
Еще несколько примеров, показывающих, как создавать CCDT и как MQ выбирает определенный канал в CCDT, вы можетепросмотрите мой ответ на Соединение с IBM MQ с использованием файла CCDT в JMS .