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

Activemq 如何转义mqtt主题中的特殊字符(正斜杠)?,activemq,mqtt,Activemq,Mqtt,我使用此应用程序通过mqtt连接到ActiveMQ代理。只要我的主题没有正斜杠(/),消息的订阅、发布和接收就可以正常工作 我知道前向斜杠是mqtt中的特殊字符,根据“/”将转换为“”。然而,在我的例子中,我需要连接到使用JMS创建的主题,这些主题被编写为uri(示例),因此它们的名称上会有“/” 在mqtt上是否仍有替换“/”的方法?目前,如果我尝试连接到一个名为http://activemq.apache.org/它实际上将连接到http:…activemq.apache.org。我的建议。

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

我知道前向斜杠是mqtt中的特殊字符,根据
“/”
将转换为
”。然而,在我的例子中,我需要连接到使用JMS创建的主题,这些主题被编写为uri(示例),因此它们的名称上会有“/”


在mqtt上是否仍有替换
“/”
的方法?目前,如果我尝试连接到一个名为
http://activemq.apache.org/
它实际上将连接到
http:…activemq.apache.org。

我的建议。。仅当您正在部署自己的ActiveMQ服务时有效

下载ActiveMQ源。。 转换发生在模块MQTTProtocolConverter中。在那里你会看到特殊的转换。。代码在5.10.0中已经更改,但是不用说您可以在那里转义,它应该可以工作。我修改了来自MQTT和outbound的入站请求的代码

在尝试使用MQTT时,我遇到过类似的问题,在主题中有“” 例如

MQTT主题是/accounts/foobar/users/foo/storage/myText.txt

这在当前实现中更改为

.accounts.foobar.users.foo.storage.myText.txt

然后,当从MQTT插件接收到消息时,主题将转换为

/accounts/foobar/users/foo/storage/myText/txt

这不是我想要的,所以我不得不修改转换器以避开“.” 其结果是将JMS-toipc转变为

.accounts.foobar.users.foo.storage.myText\.txt


这起作用了

您无法在mqtt上避开“/”,我不知道该建议什么。这确实需要熟悉activemq实现的人回答。你的问题源于他们是如何选择重写主题的——似乎没有办法阻止他们这样做。如果您在这里没有得到有用的响应,您应该尝试通过一个activemq支持通道。@Knollery我检查了他们的,他们将“/”替换为“.”。您是否碰巧知道,根据mqtt标准,mqtt是否应该接受名称上以某种方式转义的“/”主题?如果是这样的话,我可能会尝试在代理源代码中进行更改(或者自己更改),否则我不应该试图说服它不要使用这样的主题names@Thomas不,MQTT中没有转义/的概念,因此这表明,使用ActiveMQ不可能从MQTT客户机订阅包含/的JMS创建主题。这似乎是一个很大的限制,因此值得继续关注。这就是我实际做的=D缺点是代码与主分支不同步,但因为它只是用于原型,所以这不是问题