如何在mqtt主题中转义特殊字符(正斜杠)?

时间:2013-08-28 09:00:18

标签: activemq mqtt

我有这个应用程序使用mqtt-client java library通过mqtt连接到ActiveMQ代理。只要我的主题没有正斜杠(/),订阅,发布和接收消息就可以正常工作。

我了解正斜杠是mqtt中的特殊字符,而"/" "."将转换为"/"。但是,在我的情况下,我需要连接到使用JMS创建的主题,并且这些主题被编写为uri(例如activemq mqtt support),因此将具有" /"他们的名字。

无论如何要在mqtt上寻找http://activemq.apache.org/?目前,如果我尝试连接到名为http:..activemq.apache.org.的主题,它实际上会连接到{{1}}

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

哪个有效..