我有这个应用程序使用mqtt-client java library通过mqtt连接到ActiveMQ代理。只要我的主题没有正斜杠(/),订阅,发布和接收消息就可以正常工作。
我了解正斜杠是mqtt中的特殊字符,而"/"
"."
将转换为"/"
。但是,在我的情况下,我需要连接到使用JMS创建的主题,并且这些主题被编写为uri(例如activemq mqtt support),因此将具有" /"他们的名字。
无论如何要在mqtt上寻找http://activemq.apache.org/
?目前,如果我尝试连接到名为http:..activemq.apache.org.
的主题,它实际上会连接到{{1}}
答案 0 :(得分:2)
我的建议..只有在您部署自己的ActiveMQ服务时才有效。
下载ActiveMQ源码.. 转换发生在MQTTProtocolConverter模块中。在那里你会看到特殊的转换。代码在5.10.0中发生了变化,但不用说你可以逃避那里的东西,它应该有效。我修改了来自MQTT和出站的入站请求的代码。
我在尝试使用MQTT时遇到了类似的问题,并且在主题中有'。'' s 例如。
MQTT主题是/accounts/foobar/users/foo/storage/myText.txt
在当前的实现中将其更改为
.accounts.foobar.users.foo.storage.myText.txt
然后当从MQTT插件收到消息时,主题将转换为
/帐户/ foobar的/用户/富/存储/会将myText / TXT
这不是我想要的,所以我不得不修改转换器来逃避'。' 结果是JMS toipc变成了
.accounts.foobar.users.foo.storage.myText \ .TXT
哪个有效..