我正在尝试控制Artemis用户可以在MQTT中使用哪些主题。我让Artemis工作,并且可以使用:match="#"
发送/收听MQTT主题,但是如果我尝试将某些主题的匹配项限制为:match="userA.#"
(类似于文档中的大多数示例),则无法发送并且没有收到任何消息。
我进入管理控制台,发现我保留的主题userA/test
的地址为$sys.mqtt.retain.userA.test
,所以我尝试为匹配项加上前缀,但这也不起作用。
因此,我的问题是:您可以使用security-settings
限制MQTT主题访问吗?如果可以,您该怎么做?
是否有更好的方法,例如使用/编写SimpleMQTTInterceptor?
答案 0 :(得分:0)
我相信这里的问题是match
与主题名称的语法。您的比赛是userA.#
,但您的主题是userA/test
。请注意,.
不等于/
。尝试将配置更改为:
<wildcard-addresses>
<delimiter>/</delimiter>
</wildcard-addresses>
然后将您的匹配项更改为userA/#
。
通配符语法配置在the documentation中进行了讨论。