2016-01-26 16 views
5

Używam mosquitto (http://mosquitto.org/) jako brokera MQTT i szukam porady na temat subskrybentów równoważenia obciążenia (do tego samego tematu). Jak to osiągnąć? Wszystko, co czytałem na temat protokołu, mówi, że subskrybentom tego samego numeru zostanie wydana opublikowana wiadomość.Używanie MQTT z wieloma subskrybentami

Wydaje się to nieefektywne, dlatego szukam sposobu, aby opublikowany komunikat został przekazany jednemu z podłączonych subskrybentów w podejściu round-robin, które zapewni stan zrównoważenia obciążenia.

Jeśli nie jest to możliwe w przypadku MQTT, w jaki sposób subskrybent może uniknąć przytłoczenia wiadomościami?

Odpowiedz

6

Zazwyczaj projektujesz aplikacje MQTT w sposób, w jaki nie masz przytłoczonych subskrybentów. Możesz to osiągnąć, rozkładając obciążenie na różne tematy.

Jeśli naprawdę nie mogę tego zrobić, przyjrzeć się wspólne subskrypcyjnych podejścia wyrafinowanych brokerów MQTT jak MessageSight i HiveMQ mieć. Jest to dokładnie funkcja, której szukasz, ale jest zależna od brokera i nie jest częścią oficjalnej specyfikacji MQTT.

2

MQTT jest protokołem Pub/Sub, podstawą jest od 1 do wielu dystrybucji wiadomości nie od 1 do 1 (wielu), które opisujesz. To, co opisujesz, bardziej przypomina system kolejkowania wiadomości, który różni się wyraźnie od Pub/Sub.

Mosquitto jako czysta implementacja tego protokołu nie obsługuje dostarczania podczas jego opisywania. Jednym z rozwiązań jest dla nas lokalna kolejka z subskrybentem, do której wiadomości przychodzące są dodawane, a następnie pobierane przez pulę wątków.

Wierzę, że urządzenie IBM Message Sight może zaoferować typ dostarczanego komunikatu, którego szukasz jako rozszerzenie do protokołu o nazwie Shared Subscriptions, ale z tym włączeniem różni się od czystej specyfikacji MQTT.

+0

Udostępnione subskrypcje będą również częścią specyfikacji MQTT v5 – hardillb

Powiązane problemy