如何从 MQTT 生产并在 ActiveMQ 中作为 MQTT 和 JMS 使用

How to Produce from MQTT and consume as MQTT and JMS in ActiveMQ

我有一个设置,其中消息作为 MQTT 生成到 ActiveMQ。 我有两个消费者,一个是 JMS,另一个是 MQTT。

当我将消息作为 JMS 消息发布到主题 "foo" 时,我在 JMS 和 MQTT 消费者处都收到消息,但是当我作为 MQTT 发布到同一主题时,我只收到消息在 MQTT 消费者上,JMS 消费者什么也没有收到。

在发布为 MQTT 以便能够作为 MQTT 和 JMS 使用时,我需要特别做些什么吗?

请帮忙。

更新:

JMS Consumer
JMS Producer
MQTT Publisher
MQTT Subscriber
activemq.xml

您的问题看起来是您的 JMS 消费者期望消息作为 TextMessage 到达,这在处理 MQTT 生成的消息时是错误的假设。

MQTT 消息是二进制的,没有内容类型信息或 headers 来定义负载。出于这个原因,代理将始终将它们解释为 BytesMessage 并按此发送它们。您将需要针对该事实进行编码并使用 BytesMessage,然后将有效负载作为字符串读出。