Översikt över delade prenumerationer i Azure Event Grid MQTT Broker

Shared-prenumerationer i Azure Event Grid MQTT Broker är ett meddelandemönster som gör det möjligt för flera klienter att använda meddelanden från en enskild ämnesprenumeration som en grupp, vilket gör att mäklaren kan distribuera meddelanden mellan klienter på ett belastningsutjämningsmässigt sätt. I stället för att varje prenumerant får varje meddelande får endast en klient i den delade gruppen varje meddelande, vilket förbättrar skalbarheten och dataflödet för serverdelsbearbetningssystem.

Så här fungerar delade prenumerationer

I en MQTT-standardprenumeration får varje prenumerationsklient en kopia av varje meddelande. Med delade prenumerationer behandlar mäklaren en grupp klienter som en enda logisk prenumerant och distribuerar meddelanden mellan dem.

  • Varje programmeddelande som matchar det delade filtret levereras endast till en aktiv session i gruppen
  • Distributionen är vanligtvis slumpmässigt belastningsutjämnad inom gruppen
  • En klientsession kan innehålla både delade och icke-delade prenumerationer samtidigt
  • Flera grupper kan prenumerera på samma ämne oberoende av varandra

Ämnesformat för delad prenumeration

Delade prenumerationer använder följande format:

$share/{group-name}/{topic-filter}

Komponenter:

  • $share → Identifierar en delad prenumeration
  • {group-name} → logisk konsumentgrupp
  • {topic-filter} → Ämnes- eller wildcardprenumeration

Example:

$share/order-processors/retail/orders/#

Viktiga egenskaper

  • Belastningsutjämning: Meddelanden distribueras mellan klienter i samma grupp för att säkerställa effektiv bearbetning.
  • Horisontell skalbarhet: Konsumenter kan skala ut oberoende utan att påverka utgivare.
  • Oberoende konsumentgrupper: Flera delade grupper får samma meddelanden oberoende av varandra samtidigt som de balanserar internt.
  • Stöd för blandade prenumerationer: En klient kan underhålla både delade och icke-delade prenumerationer i samma session.

Exempelscenario: Bearbetning av detaljhandelsorder

Överväg ett scenario för bearbetning av detaljhandelsorder med Event Grid MQTT Broker:

  • Ämne: retail/orders
  • Delad grupp: order-workers
  • Klienter: Worker1, Worker2, Worker3

Flöde:

  1. Beställningar publiceras till retail/orders
  2. Alla arbetare prenumererar på: $share/order-workers/retail/orders
  3. Event Grid MQTT Broker distribuerar:
    • Ordning 1 → Arbetare1
    • Beställning 2 → Arbetskraft2
    • Beställning 3 → Worker3

Varje order bearbetas en gång, medan systemet skalas vågrätt.

Diagram över Event Grid MQTT Broker som distribuerar tre detaljhandelsorder till tre arbetare med hjälp av grupporderarbetare för delade prenumerationer.

Protokollbeteende och begränsningar

Stöd för MQTT-version

  • Funktion endast för MQTT 5
  • MQTT 3.1.1-klienter som försöker $share/... kommer att kopplas från

Semantik för meddelandeleverans

  • Varje meddelande levereras till en klient per grupp
  • Leverans följer minst-en-gång-principen (QoS 1)

Meddelandeordning

  • Ingen strikt beställningsgaranti för gruppmedlemmar

Sessionsbeteende

  • Sessionsförfallodatum påverkar meddelandeleveransen:
    • Om en klient kopplas från och sessionen upphör att gälla kan meddelanden omtilldelas
    • Beständiga sessioner förbättrar tillförlitligheten

Användningsfall i Event Grid MQTT Broker

Delade prenumerationer är idealiska för:

  • IoT-telemetribearbetning med högt dataflöde: Distribuera telemetri eller händelser över flera bearbetningstjänster.
  • Arbetarpooler för backend/mikrotjänster: Möjliggör att tillståndslösa tjänster kan bearbeta händelser utan dubbletter.
  • Användare av enhetligt namnområde (UNS): Förbrukar effektivt industriella dataströmmar med högt dataflöde.

När du ska använda delade prenumerationer

Använd delade prenumerationer när:

  • Du behöver parallell meddelandebearbetning.
  • En enskild konsument kan inte hantera belastningen.
  • Du vill ha skalbara och motståndskraftiga arkitekturer.
  • Du vill undvika att skapa anpassad belastningsutjämning.

Diagram som visar en delad prenumeration där ett ämne distribuerar meddelanden mellan flera konsumenter för parallell bearbetning.