Я хочу ограничить размер сообщения 800 КБ для пользователей, пытающихся опубликовать сообщение mqtt в теме artemis, и для этого я обновил настройки адреса в файле etc / broker.xml с помощью

<max-size-bytes>800</max-size-bytes>
<page-size-bytes>800</page-size-bytes>

Кажется, это не работает, и я могу опубликовать сообщение размером 1 МБ через клиент MQTT.

0
rxm 15 Июн 2020 в 07:01

1 ответ

Лучший ответ

Параметр max-size-bytes применяется к адресу , а не к сообщению. Кроме того, этот параметр без обозначений интерпретируется как байты (хотя могут использоваться другие байтовые обозначения, например MB, kb и т. Д.). Следовательно, установка <max-size-bytes>800</max-size-bytes> сообщит брокеру о необходимости принудительно применить соответствующий address-full-policy (который по умолчанию равен PAGE), когда общее количество байтов в совпадающем адресе равно 800. Как указано в документации, max-size-bytes является:

... максимальный объем памяти, который мог иметь адрес до перехода в страничный режим.

Здесь поддерживаются несколько различных политик / режимов. Помимо PAGE брокер поддерживает FAIL, DROP и BLOCK. Дополнительные сведения см. В документации.

Если вы хотите исключить сообщения строго по их размеру, я рекомендую вам реализовать MQTT перехватчик. Убедитесь, что вы используете версию не ниже 2.12.0, чтобы исправить эту проблему < / а>.

1
Justin Bertram 15 Июн 2020 в 14:30