在 Artemis 中为 MQTT 设置安全设置

Setting security-settings for MQTT in Artemis

我正在尝试控制 Artemis 用户可以将哪些主题与 MQTT 一起使用。我有 Artemis 工作并且可以 send/listen 到 MQTT 主题使用:match="#" 但是如果我尝试将某些主题的匹配限制为:match="userA.#"(类似于文档中的大多数示例)我无法发送也不会接收任何消息。

我进入管理控制台,看到我保留的主题 userA/test 得到了地址 $sys.mqtt.retain.userA.test,所以我尝试为匹配添加前缀,但这也不起作用。

所以我的问题是:您可以使用 security-settings 限制 MQTT 主题访问吗?如果可以,您会怎么做?

是否有更好的方法,例如 using/writing SimpleMQTTInterceptor?

我认为这里的问题是 match 与主题名称的语法。您的匹配项是 userA.#,但您的主题是 userA/test。请注意 . 不等于 /。尝试将您的配置更改为:

<wildcard-addresses>
   <delimiter>/</delimiter>
</wildcard-addresses>

然后将匹配更改为 userA/#

通配符语法配置在 the documentation 中讨论。