Zwykle trzeba wybrać protokół z silnymi gwarancjami, czy klient otrzyma jakiekolwiek pakiety / wiadomości, w jakiej kolejności i czy dozwolone jest powielanie.
W przypadku sieci urządzeń IoT wysyłających między sobą małe i średnie wiadomości, użycie MQTT z Quality of Service 2 wydaje się dobrze pasować do twojego przypadku użycia. Jak podano w łączu HiveMQ:
Najwyższa QoS wynosi 2, gwarantuje to, że każda wiadomość zostanie odebrana tylko raz przez partnera. Jest to najbezpieczniejszy i zarazem najwolniejszy poziom usług. Gwarancję zapewniają dwa przepływy tam i z powrotem między nadawcą a odbiorcą.
Należy pamiętać, że QoS 2 zachowuje kolejność komunikatów i, jak stwierdzono, zapobiega duplikowaniu wiadomości.
Istnieje znaczny narzut w użyciu MQTT QoS 2 w porównaniu do standardowych 0 (QoS, która jest zbliżona do ognia i zapomnij wiadomość, jeśli nie dotrze do maklera, a następnie komunikat nie dostać ponowne przesłanie i to bezpowrotnie ) - QoS 2 wymaga 4 wiadomości ( PUBLISH
od nadawcy, PUBREC
od brokera, PUBREL
od klienta, PUBCOMP
od brokera), więc generalnie zajmie to więcej czasu, zajmie więcej zasobów (stąd dłuższe transmisje radiowe i większe zużycie energii na dowolnych ograniczonych punktach końcowych).
Wiadomość MQTT QoS 2 będzie tylko ponownie wysyłana od nadawcy, dopóki nie otrzyma potwierdzenia od brokera, więc w końcu wiadomość powinna przejść, nawet jeśli połączenie jest niedoskonałe.
To, czy protokół publikowania i subskrypcji oparty na tematach jest odpowiedni dla danego przypadku, zależy od ciebie; artykuł w Wikipedii może pomóc Ci znaleźć pomysł.