问题描述
我有一个设置,其中将消息作为MQTT生成到ActiveMQ.我有两个使用者,一个是JMS,另一个是MQTT.
I have a setup where messages are produced as MQTT to ActiveMQ.I have two consumers one as JMS and another MQTT.
当我将消息作为JMS消息发布到主题"foo"时,我在JMS和MQTT使用者上都收到消息,但是当我在同一主题上作为MQTT进行发布时,我仅在MQTT使用者上收到消息,并且JMS使用者什么也没收到.
When I am publishing message as JMS Message to the topic "foo", I am receiving the messages at both JMS and MQTT consumers, but when I am publishing as MQTT on the same topic I receive the message only on MQTT consumer and nothing at all is received at JMS consumer.
在以MQTT发行时,是否需要做一些特别的事情,以便能够以MQTT和JMS的形式使用.
Is there something I need to do specifically when publishing as MQTT to be able to consume as MQTT as well as JMS.
请帮助.
更新:
JMS使用者
JMS生产者
MQTT发布者
MQTT订阅者
activemq.xml
JMS Consumer
JMS Producer
MQTT Publisher
MQTT Subscriber
activemq.xml
推荐答案
您的问题似乎是您的JMS使用者希望消息以TextMessage的形式到达,这是在处理MQTT产生的消息时的错误假设.
Your problem looks to be that your JMS consumer is expecting the messages to arrive as a TextMessage which is a false assumption when dealing with MQTT produced messages.
MQTT消息是二进制的,没有内容类型信息或标头来定义有效负载.出于这个原因,代理将始终将它们解释为BytesMessage并以此进行分发.您将需要为该事实编写代码,并同时使用BytesMessage,然后将有效内容读取为String.
MQTT messages are binary with no content type information or headers to define the payload. For that reason the broker will always interpret them as a BytesMessage and dispatch them as such. You will need to code for that fact and consume BytesMessage as well, and then read the payload out as a String.
这篇关于如何从MQTT产生并在ActiveMQ中作为MQTT和JMS进行消费的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!