#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
. Я не понимаю, почему это сработает в первый раз, хотя