【发布时间】:2016-11-14 22:30:36
【问题描述】:
我在 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 应用程序发布时,它会失败。
我尝试了 cmets 中列出的两种方法,但我发现了一个奇怪的事情:根据我使用 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”。
【问题讨论】:
标签: node.js format ibm-mq mqtt telemetry