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