在 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 中讨论。
我正在尝试控制 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 中讨论。