MQTT モジュール (mqtt.js) を使用して NodeJS にクライアントがあり、キューにリダイレクトされた WebSphere MQ のトピックと通信します。結果をキューに入れる必要があるため、ソースと宛先の間でトピックを使用します ( MQTT プロトコルはトピックとのみ通信するため)。
NodeJS (ソース) -> Websphere MQ のトピック (中間) -> Websphere MQ のキュー (宛先)
問題は、WebsphereMQ のキューで受信したメッセージが MQHRF2 形式ですが、MQSTR が必要なことです。
mqtt.js 側でフォーマットを指定するプロパティが見つかりませんでした。
IBM Websphere MQ でそれを強制できると思っていましたが、どうすればよいでしょうか? この使用のためにチャネルまたは何かを作成できますか?つまり、受信フォーマットを変換できますか?
よろしくお願いいたします。
構成 :
制約 :
- WebSphere MQ は v7.5 でなければなりません (そのため、mqlight を使用するために v8 にアップグレードすることはできません)
- モジュール MQTT.js を使用することをお勧めします
WebSphere MQ エクスプローラーを介してトピックに直接公開すると、正しく機能します。ただし、NodeJS アプリケーションから発行すると失敗します。
コメントにリストされている両方の方法を試してみましたが、奇妙なことがわかりました。
MQ コンソールで、次のコマンドを使用: amqsbcg QUEUE_MQTT_VERIF MQTTVerification :
ご覧のとおり、コンソールではフォーマット フィールドは空ですが、MQExplorer では MQHRF2 です。メッセージも違います。
したがって、MQConsole の結果は正しく、MQExplorer は変更後も間違った結果を示します。両方で変更が行われた場合にのみ、結果が正しいことに注意してください。
- サブスクリプション : ALTER SUB(APPLE.PRICES) PSPROP(NONE)
- Queue : ALTER QLOCAL(PRICES) PROPCTL(NONE)
問題の原因は、MQExplorer ソフトウェアでの表示だけでしょうか?
編集:
MQExplorer と MQConsole の違いは、MQ Explorer のパラメータによるものでした: Window -> Preferences -> WebSphereMQ Explorer -> Message properties -> [Display message properties] のチェックを外します。