MQTT с HiveMQ, похоже, сбрасывает ограничения конфигурации по умолчанию при резком отключении

#configuration #mqtt #hivemq

Вопрос:

У меня есть брокер hivemq, работающий с кластером с 2 узлами и консольным приложением, которое подключается, отправляет и получает сообщения.

Я изменил конфигурацию так, чтобы она могла ставить в очередь более 1000 сообщений, и первоначально, когда я запускаю службу, она отправляет 1900 сообщений и ставит их в очередь, после того, как клиент подключается, все эти сообщения получены.

Когда я перезапускаю службу, принимается только 1000 сообщений. Поэтому я расширил консольное приложение, чтобы полностью отключить клиентов, а затем снова подключить их, отправить еще 1900 сообщений, и все они были получены снова. Но после перезапуска приложения было получено только 1000.

Кто-нибудь знает, почему это может происходить?

Конфигурация узла 1:

 <?xml version="1.0"?>
<hivemq>
<listeners>
    <tcp-listener>
        <port>1884</port>
        <bind-address>127.0.0.1</bind-address>
    </tcp-listener>
</listeners>

<mqtt>
    <max-client-id-length>65535</max-client-id-length>
    <max-topic-length>65535</max-topic-length>
    <incoming-bandwidth-throttling>0</incoming-bandwidth-throttling>
    <no-connect-idle-timeout>30000</no-connect-idle-timeout>
    <max-queue-size>100000</max-queue-size>
    <max-queued-messages>100000</max-queued-messages>
    <server-receive-maximum>10000</server-receive-maximum>
</mqtt>

<throttling>
    <max-connections>-1</max-connections>
    <max-message-size>268435456</max-message-size>
    <outgoing-limit>0</outgoing-limit>
    <incoming-limit>0</incoming-limit>
</throttling>

<cluster>
    <enabled>true</enabled>
</cluster>

<anonymous-usage-statistics>
    <enabled>false</enabled>
</anonymous-usage-statistics>

</hivemq>
 

Конфигурация узла 2:

 <?xml version="1.0"?>
<hivemq>
<listeners>
    <tcp-listener>
        <port>1885</port>
        <bind-address>127.0.0.1</bind-address>
    </tcp-listener>
</listeners>

<mqtt>
    <max-client-id-length>65535</max-client-id-length>
    <max-topic-length>65535</max-topic-length>
    <incoming-bandwidth-throttling>0</incoming-bandwidth-throttling>
    <no-connect-idle-timeout>30000</no-connect-idle-timeout>
    <max-queue-size>100000</max-queue-size>
    <max-queued-messages>100000</max-queued-messages>
    <server-receive-maximum>10000</server-receive-maximum>
</mqtt>

<throttling>
    <max-connections>-1</max-connections>
    <max-message-size>268435456</max-message-size>
    <outgoing-limit>0</outgoing-limit>
    <incoming-limit>0</incoming-limit>
</throttling>

<cluster>
    <enabled>true</enabled>
</cluster>

<control-center>
    <listeners>
        <http>
            <port>8081</port>
            <bind-address>127.0.0.1</bind-address>
        </http>
    </listeners>
</control-center>   

<anonymous-usage-statistics>
    <enabled>false</enabled>
</anonymous-usage-statistics>

</hivemq>
 

Комментарии:

1. При быстром просмотре документов (или этого ) похоже max-queue-size , что это должно быть внутри <queued-messages> узла? Это помогло бы узнать, какую версию HiveMQ вы используете, а также более подробно о значении «отправляет 1900 сообщений и ставит их в очередь» (отправка сообщений QOS1 в ранее подписанную тему?).

2. спасибо, добавление <queued-messages> узла сработало. Я использую версию 4.7.1 . Я не понимаю, почему это сработает в первый раз, хотя