我在 NodeJS 中有一个客户端,使用 MQTT 模块 (mqtt.js) 与 WebSphere MQ 的主题通信,重定向到队列:我需要将结果放在队列中,所以我在源和目标之间使用主题(因为 MQTT 协议只与主题通信)。
所以我们有: NodeJS(源)-> Websphere MQ 的主题(中间)-> Websphere MQ 的队列(目标)
问题是WebsphereMQ队列上接收到的消息是MQHRF2格式,但我需要MQSTR。
我没有在 mqtt.js 端找到任何属性来指定格式。
我想我们可以用 IBM Websphere MQ 来强制它,但是怎么做呢?我可以为此用途创建一个频道或任何东西,也就是说转换接收格式吗?
在此先感谢您的帮助 !
配置 :
约束:
- WebSphere MQ 必须是 v7.5(所以我不能升级到 v8 来使用 mqlight)
- 更好地使用模块 MQTT.js
当我通过 WebSphere MQ 资源管理器直接发布主题时,它可以正常工作。但是,当我从 NodeJS 应用程序发布时它会失败。
我尝试了评论中列出的两种方法,但发现了一件奇怪的事情:根据我使用 MQExplorer(我一直使用的)还是 MQ 控制台,结果会有所不同:
在 MQ 控制台上,使用以下命令: amqsbcg QUEUE_MQTT_VERIF MQTTVerification :
如您所见,在控制台中,格式字段为空,而在 MQExplorer 上为 MQHRF2。消息也不同。
因此 MQConsole 上的结果是正确的,而 MQExplorer 在更改后仍然显示错误结果。请注意,仅当对两者都进行了更改时,结果才是正确的:
- 订阅:ALTER SUB(APPLE.PRICES) PSPROP(NONE)
- 队列:ALTER QLOCAL(PRICES) PROPCTL(NONE)
也许问题的根源只是 MQExplorer 软件上的显示?
编辑:
MQExplorer 和 MQConsole 的区别在于 MQ Explorer 中的参数:Window -> Preferences -> WebSphereMQ Explorer -> Message properties -> 取消选中“Display message properties”。