【发布时间】:2020-06-15 22:30:36
【问题描述】:
我想将尝试在 artemis 主题中发布 mqtt 消息的用户限制为 800 KB 的消息大小,为此我已使用
<max-size-bytes>800</max-size-bytes>
<page-size-bytes>800</page-size-bytes>
这似乎不起作用,我可以通过 MQTT 客户端发布 1 MB 消息。
【问题讨论】:
标签: mqtt activemq-artemis
我想将尝试在 artemis 主题中发布 mqtt 消息的用户限制为 800 KB 的消息大小,为此我已使用
<max-size-bytes>800</max-size-bytes>
<page-size-bytes>800</page-size-bytes>
这似乎不起作用,我可以通过 MQTT 客户端发布 1 MB 消息。
【问题讨论】:
标签: mqtt activemq-artemis
max-size-bytes 设置适用于地址,而不是消息。此外,这个没有符号的设置被解释为字节(尽管可以使用其他字节符号,例如MB、kb 等)。因此,设置<max-size-bytes>800</max-size-bytes> 将告诉代理在匹配地址中的总字节数为800 时强制执行相应的address-full-policy(默认为PAGE)。正如the documentation 所说,max-size-bytes 是:
...地址在进入页面模式之前可以拥有的最大内存。
这里支持几种不同的策略/模式。除了PAGE,代理还支持FAIL、DROP和BLOCK。有关这些的更多详细信息,请参阅the documentation。
如果您想严格根据消息大小排除消息,我建议您实施 MQTT interceptor。确保您使用的是至少 2.12.0,以便您可以修复 this issue。
【讨论】:
etc/artemis.profile 中),然后在您的拦截器中检索这些值。