Jms MQTT能否在ActiveMQ的主题名称(目的地)中使用点/句点

Jms MQTT能否在ActiveMQ的主题名称(目的地)中使用点/句点,jms,activemq,mqtt,message-queue,jms-topic,Jms,Activemq,Mqtt,Message Queue,Jms Topic,我们正试图通过ActiveMQ 5.15.8上的MQTT客户机MQTT.fx订阅名为message/abc.com/broadcast的主题。但是,ActiveMQ控制台显示订阅的主题是message.abc/com.broadcast 我们看到MQTT斜杠分隔符将转换为ActiveMQ中的点。但是为什么ActiveMQ也将点转换为斜杠呢?我们希望订阅和发布的主题是message.abc.com.broadcast 我们已经尝试了ActiveMQ的DestinationPathSeparato

我们正试图通过ActiveMQ 5.15.8上的MQTT客户机MQTT.fx订阅名为
message/abc.com/broadcast
的主题。但是,ActiveMQ控制台显示订阅的主题是
message.abc/com.broadcast

我们看到MQTT斜杠分隔符将转换为ActiveMQ中的点。但是为什么ActiveMQ也将点转换为斜杠呢?我们希望订阅和发布的主题是
message.abc.com.broadcast

我们已经尝试了ActiveMQ的DestinationPathSeparator插件,如下所示

<plugins>   
        <destinationPathSeparatorPlugin pathSeparator="/" />
</plugins>

启用此插件后,
message/abc.com/broadcast
的订阅将变为
message.abc.com.broadcast
,如ActiveMQ控制台上所示。但是,当我们向
message/abc.com/broadcast发布消息时,
订户将不会收到任何消息。从控制台中,我们可以看到消费者在那里(1个消费者),消息已经排队和退队

我们如何使MQTT在ActiveMQ的主题名称中使用点/句点


谢谢

您正在混合协议。ActiveMQ与MQTT、Stomp等多种协议兼容。。。 所以ActiveMQ基于另一个来处理自己的协议

如果您使用的是MQTT,则主题将使用“/”作为分隔符,使用“+”作为任何匹配项,使用“#”作为任何子提示匹配项

在活动状态下,此通配符更改,分隔符为“.”,任何匹配项为“*”,任何子提示匹配项为“>”。 对于建议,请尽量避免在任何主题或队列名称中使用所有这些通配符

因此,如果您想订阅“counts/customers”,在控制台中将显示:“counts.customers”

它将遵循以下原则:

MQTT-ActiveMQ
  • “计数/客户”“计数。客户”
  • “计数/#”“计数。*”
  • “计数/+/#”“计数。*.>”
  • “计数/+/region”“计数。*.region”