【发布时间】:2014-07-11 02:14:06
【问题描述】:
我有这个应用程序使用mqtt-client java library 通过 mqtt 连接到 ActiveMQ 代理。只要我的主题没有正斜杠 (/),订阅、发布和接收消息就可以正常工作。
我了解正斜杠是 mqtt 中的特殊字符,根据activemq mqtt support,"/" 将转换为"."。但是,在我的例子中,我需要连接到使用 JMS 创建的主题,这些主题写为 uri(例如 http://activemq.apache.org/),因此名称上会带有“/”。
有没有办法在 mqtt 上对"/" 进行转义?目前,如果我尝试连接到一个名为 http://activemq.apache.org/ 的主题,它实际上会连接到 http:..activemq.apache.org.
【问题讨论】:
-
mqtt 上的“/”是逃不掉的,不知道该建议什么。
-
这确实需要熟悉activemq实现的人来回答。您的问题源于他们如何选择重写主题 - 似乎没有选择阻止它这样做。如果您在这里没有得到有用的回复,您应该通过 activemq 支持渠道之一尝试。
-
@knolleary 我检查了他们的source,他们将“/”替换为“.”。您是否偶然知道根据 mqtt 标准,mqtt 是否应该接受带有“/”的主题以某种方式在其名称上转义?如果是这样,我可能会尝试在代理源中推送更改(或自己更改),否则我不应该在这里尝试说服它不要使用这样的主题名称
-
@Thomas 不,在 MQTT 中没有转义 / 的概念 - 这表明使用 ActiveMQ 不可能从 MQTT 客户端订阅包含 / 的 JMS 创建的主题。这似乎是一个很大的限制,因此值得跟进。