У меня есть клиент в NodeJS, используя модуль MQTT (mqtt.js) для связи с темой WebSphere MQ, перенаправленный в очередь: мне нужен результат в очереди, поэтому я использую тему между источником и пунктом назначения (поскольку протокол MQTT обменивается только с темами).IBM WebSphere/MQTT.js: конвертировать MQHRF2 в формат MQSTR
Итак, мы имеем: NodeJS (источник) -> Тема Websphere MQ (промежуточный) -> Очередь Websphere MQ (назначения)
Проблема заключается в том, что полученные сообщения по очереди WebsphereMQ - формат MQHRF2, но мне нужен MQSTR.
Я не нашел никакого свойства в mqtt.js, чтобы указать формат.
Я предположил, что мы можем заставить его использовать IBM Websphere MQ, но как? Могу ли я создать канал или что-нибудь для этого использования, то есть преобразовать принимаемый формат?
Заранее благодарим за вашу помощь!
Конфигурация:
Сдерживает:
- WebSphere MQ должен быть v7.5 (так что я не могу перейти на v8 использовать mqlight)
- Be tter оставаться с модулем MQTT.js
Он работает правильно, когда я публикую непосредственно по теме через проводник WebSphere MQ. Однако он не работает, когда я публикую приложение NodeJS.
Я попробовал оба метода листинга в комментариях, но я нашел странную вещь: результат отличается в зависимости от, если я использую MQExplorer (то, что я всегда использовал) или MQ консоли:
на MQ консоли, с помощью команды: amqsbcg QUEUE_MQTT_VERIF MQTTVerification:
Как вы можете видеть, в консоли, поле формата пуст, в то время как на MQExplorer это MQHRF2. Сообщения также разные.
Так что результат на MQConsole прав, тогда как MQExplorer по-прежнему показывает неправильный результат после изменений. Обратите внимание, что результат является правильным только тогда, когда изменения были сделаны на обоих:
- Подписка: ALTER SUB (APPLE.ЦЕНЫ) PSPROP (NONE)
- Очередь: ALTER QLOCAL (ЦЕНЫ) PROPCTL (NONE)
Может быть источником проблемы является только дисплей на программное обеспечение MQExplorer?
EDIT:
Разница между MQExplorer и MQConsole было связано с параметром в MQ Explorer: Window -> Preferences -> WebSphereMQ Проводник -> Свойства сообщения -> снимите флажок "Отобразить свойства сообщений".
Я сделал то, что вы сказали шаг за шагом, но он все еще не работает ... Может быть, нам нужно проверить что-нибудь еще? В качестве альтернативы можно ли удалить заголовок, чтобы сохранить только принятое содержимое строки? –
Что происходит, когда публикация поступает из внешнего источника (здесь nodeJS)? (cf: Редактировать сообщение) –
какой метод вы использовали? Вы изменили SUB или QUEUE? Если вы изменили SUB, вы опубликовали новое сообщение, чтобы проверить, работает ли оно? –