Я хочу ограничить размер сообщения 800 КБ для пользователей, пытающихся опубликовать сообщение mqtt в теме artemis, и для этого я обновил настройки адреса в файле etc / broker.xml с помощью
<max-size-bytes>800</max-size-bytes>
<page-size-bytes>800</page-size-bytes>
Кажется, это не работает, и я могу опубликовать сообщение размером 1 МБ через клиент MQTT.
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, чтобы исправить эту проблему < / а>.
Похожие вопросы
Новые вопросы
mqtt
Телеметрический транспорт с очередями сообщений, или MQTT, представляет собой протокол обмена сообщениями «публикация / подписка», предназначенный для минимизации использования полосы пропускания сети и требований к ресурсам устройства. Клиентские и серверные реализации существуют на самых разных языках.