Как определить исходящую очередь в примере программы IBM mq от codeengine

Ссылка на проект: https://github.com/ibm-messaging/mq-dev-patterns/blob/master/serverless/codeengine/clientapp/env.json

Я хочу лучше понять этот пример проекта. Вот мои вопросы:

  1. Я хотел бы знать, как этот проект определяет исходящие и входящие очереди.
  2. Для чего используются значения «APP_USER» и «APP_PASSWORD»?
  3. Для чего используются значения «MODEL_QUEUE_NAME», «DYNAMIC_QUEUE_PREFIX»?
  4. У меня есть файл .TAB, который обычно используется в программах .exe, и мне нужно перенести его в этот проект. Как я могу это сделать?
  5. Следует также упомянуть, что я надеюсь подключить этот пример программы к MQIPT. У меня есть хост и порт, на которых находится MQIPT. Будут ли эти значения включены в значения «HOST» и «PORT» в файле env?

Я новичок в MQ, и мне нужно руководство, чтобы запустить мой проект. Спасибо.

Я отправил этот проект в механизм кода IBM Cloud, и он работает, но я не могу ничего поместить в нужную очередь или прочитать что-либо из нее. Скорее всего это связано с тем, что конфигурация неправильная.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот файл env.json используется в качестве настроек среды по умолчанию для клиентского приложения. Все значения можно переопределить с помощью настроек среды. Клиентское приложение представляет собой express/node.js, которое предоставляет следующие конечные точки:

  • / (Домашняя страница): показывает версию приложения.
  • /mqput: показывает форму, которая помещает несколько сообщений в очередь.
  • /mpget: показывает форму, которая получает несколько сообщений из очереди.
  • /api/mqput : маршрут API, который страница mqput использует для помещения сообщений в очередь.
  • /api/mqgetby: маршрут API, который страница mqget использует для получения сообщений из очереди.
  • /api/mqgetbyid: маршрут API, используемый для получения сообщения с определенным идентификатором сообщения.

Формы используются для запуска/тестирования API. API может использоваться другими приложениями/наблюдателями, чтобы запросить код, чтобы он проснулся и что-то сделал.

Очередь, в которой необходимо выполнить эти действия, находится в файл env.json. Если вы хотите изменить код API, чтобы он ожидал имя очереди в качестве входных данных, вы, вероятно, захотите добавить список очередей в формы и передать выбранную очередь конечным точкам API.

Код использует библиотеку IBM MQ node.js ibmmq и использует пользователя и пароль приложения в качестве учетных данных приложения для администратора очередей, к которому оно подключается.

MODEL_QUEUE_NAME и DYNAMIC_QUEUE_PREFIX на самом деле не используются в коде, но сохраняются для создания маршрутов, которые запускают действие запроса/ответа. Для чего нужна модель очереди для создания динамических временных очередей.

Что касается конфигурации MQIPT, CONNAME, который вы используете для подключения клиента, должен указывать на MQIPT, а если вы используете TLS, клиент должен доверять сертификату MQIPT. Итак, вы должны использовать имя хоста и порт MQIPT в своем env.json, а если вы используете TLS, вам нужно будет заполнить хранилища ключей соответствующими сертификатами.

Образец CodeEngine, похоже, не включает поддержку CCDT, но лежащая в его основе библиотека MQ Node.JS экспортирует CCDTurl. Вам нужно будет изменить функцию buildCNO() в mqclient.js, чтобы пропустить код, который создает и устанавливает mq.MQCD() так же, как это сделано в примере Basicget.js.

например. Этот бит логики пропускается, если используется CCDT.

  if (! ccdtCheck()) {
    debug_info('CCDT URL export is not set, will be using json envrionment client connections settings for %s', MQDetails['QMGR']);

    // And then fill in relevant fields for the MQCD
    let cd = new mq.MQCD();

    cd.ConnectionName = `${MQDetails.HOST}(${MQDetails.PORT})`;
    cd.ChannelName = MQDetails.CHANNEL;
    debug_info('Connection is ', cd.ConnectionName);

    if (MQDetails.KEY_REPOSITORY) {
      debug_info('Will be running in TLS Mode');

      cd.SSLCipherSpec = MQDetails.CIPHER;
      cd.SSLClientAuth = MQC.MQSCA_OPTIONAL;
    }

    // Make the MQCNO refer to the MQCD
    cno.ClientConn = cd;
  }

Большое спасибо за ваш ответ. Это помогает прояснить многие вопросы, которые у меня были. У меня есть несколько дополнительных вопросов, и я буду публиковать их по одному комментарию за раз. Что касается входящих и исходящих очередей, предлагаете ли вы передать имя очереди в качестве параметра, а не определять как одну константу env? И тем самым я смогу добиться поддержки нескольких очередей? Что касается значений «APP_USER» и «APP_PASSWORD», нужны ли они мне, если я подключаюсь к удаленному MQIPT, а не напрямую к диспетчеру очередей?

Uhnj 24.05.2024 18:08

Мне интересно, отвечали ли вы на вопрос о файле .TAB, указывая на экспорт CCDTurl и на то, как изменить функцию buildCNO(). Если это правда, что вы обращались к вопросу о файле .TAB, я не уверен, что понял, как помогает пропуск настройки mq.MQCD() и создание. Разве мне не понадобятся значения в файле .TAB для подключения к MQIPT?

Uhnj 24.05.2024 18:11

Что касается значений «HOST» и «PORT» в файле env, а также соединения TLS, нужно ли мне просто заполнить правильные файлы .sth и .kdb`?

Uhnj 24.05.2024 18:12

RE: Пользователь и пароль приложения, если они вам понадобятся, будут зависеть от того, как настроен администратор очередей на другой стороне MQIPT. Если вам их не предоставили, возможно, и нет, но если вы видите ошибки 2035, возможно, они есть. Если вы этого не сделаете, вам следует изменить код, чтобы не использовать их.

chughts 28.05.2024 09:35

RE пропускает раздел mq.MQCD() и не требует установки HOST и PORT , см. дополнение к ответу. Они не нужны, поскольку эти значения берутся из файла CCDT.

chughts 28.05.2024 09:41

Другие вопросы по теме

Как я могу добавить этому пользователю разрешение на размещение сообщений в диспетчере очередей из приложения JMS?
Проблема подключения JNDI с mq-jms-spring-boot-starter
CWWKS1100A: Не удалось выполнить аутентификацию для администратора с идентификатором пользователя. Указан неверный идентификатор пользователя или пароль
Поместите свойства сообщения JMS в очередь IBM MQ и получите доступ к ним из другого клиента JMS, работающего на платформе Websphere Freedom
MQRC_Q_MGR_NAME_ERROR
Запустите маршрут Apache Camel из другого приложения весенней загрузки
Как получить сообщение IBM MQ по идентификатору сообщения с помощью bash? есть ли в наличии инструмент?
Разрешения на путь к данным MQ
Как проверить, какой JmsOutboundGateway использовался шлюзом обмена сообщениями (два JmsOutboundGateway, подключенные к одному и тому же входному каналу) – Spring Integration
Подключение к MQ из Java с использованием SSL завершается с ошибкой MQJE001: код завершения «2», причина «2397»