Eigenständiger BegriffMusterKapitel II · Kommunikation · Baustein 10 von 23

Competing Consumers

Competing Consumers verteilen Queueaufträge auf einen Workerpool.

  1. SperreOrdnet einen Auftrag zeitweise genau einem Worker zu.
  2. AckErfolgt erst nach dauerhafter Fachwirkung.
  3. SkalierungNutzt Queuealter, Laufzeit und Ressourcengrenzen.

Einordnung

Warum das wichtig ist

Der Durchsatzgewinn ist nur sicher, wenn erneute Zustellung dieselbe Fachwirkung erkennt.

Die vier Rechnungsworker sind hypothetisch; aktuell laufen sieben Module gemeinsam.

Shop-Beispiel · Zuordnung

Workerfehler und Brokerreaktion

Der aktuelle Shop erzeugt Rechnungen im modularen Monolithen mit sieben Modulen. Hypothetisch legt Bestellung Rechnungsaufträge in eine Queue, aus der vier Worker konkurrierend lesen. Bestell-ID und Rechnungsversion bilden den Idempotenzschlüssel. Das Team beendet einen Worker nach dem Speichern des PDFs und vor der Brokerbestätigung; nach Sperrablauf übernimmt ein anderer Worker, erkennt die vorhandene Wirkung und bestätigt ohne zweite Rechnung. Queuealter und Laufzeit steuern die Workerzahl.

So liest du das Bild

  1. Sperre Länger als Laufzeit oder verlängerbar
  2. Ack Wirkung vor Ack
  3. Skalierung Alter statt Anzahl
Workerfehler und Brokerreaktion
VergleichFehlerpunktBrokerSchutz
Vor WirkungSperre läuft ausAuftrag erscheint erneutSicherer Neustart
Nach Wirkung, vor AckAuftrag erscheint erneutWirkung existiertIdempotenzschlüssel
Nach AckAuftrag abgeschlossenKeine reguläre WiederholungAudit verbindet Wirkung
Der Fehlerpunkt bestimmt Wiederholung und Idempotenzbedarf.

Nutzen & Grenzen

Hilft, wenn

  • Unabhängige Hintergrundaufträge haben variables Volumen.
  • Je Auftrag soll genau ein Worker gleichzeitig arbeiten.
  • Reihenfolge genügt pro Bestell- oder Kundenschlüssel.

Grenzen

  • At-least-once-Zustellung kann denselben Auftrag erneut liefern.
  • Zu kurze Sperren erzeugen parallele Doppelarbeit; zu lange verzögern Erholung.
  • Globale Reihenfolge und freie Parallelität widersprechen sich.

In der Praxis

  1. Starte mehrere Rechnungsworker und teile Testaufträge auf. Prüfe, dass jede Nachricht nur einmal gleichzeitig beansprucht wird und die Gesamtrate bei Last wächst.
  2. Beende einen Worker nach fachlichem Commit, aber vor Bestätigung der Nachricht. Verifiziere erneute Zustellung und genau eine Rechnungswirkung durch Idempotenz.
  3. Bewerte horizontale Skalierung mit Blick auf geordnete Aufträge desselben Kunden, Poison Messages und Dead-Letter-Behandlung. Lege fest, was pro Schlüssel serialisiert bleibt.
Ausführliche Erklärung lesen

Der Broker sperrt eine Nachricht für einen Worker. Nach erfolgreicher Wirkung bestätigt der Worker; endet die Sperre vorher, darf ein anderer Worker denselben Auftrag erhalten.

Mehr Worker erhöhen Parallelität nur für unabhängige Arbeit. Gemeinsame Ressourcen, Reihenfolge oder ungleich große Aufträge begrenzen den Durchsatz; Queuealter ist deshalb aussagekräftiger als bloße Anzahl.

Queue beschreibt den Arbeitskanal. Idempotenz schützt die Fachwirkung bei erneuter Übergabe nach einem Absturz.

Selbst prüfen

Teste dich in drei Stufen

  1. AblesenIm Bild nachsehen

    Wie unterscheidet sich das Muster von Pub/Sub?

    Lösung mit Begründung ansehen

    Ein Worker verarbeitet den Auftrag; Abonnenten erhalten keine eigenen Kopien.

  2. AnwendenAuf eine neue Lage übertragen

    Wie verhindert das Beispiel eine zweite Rechnung?

    Lösung mit Begründung ansehen

    Bestell-ID und Version erkennen die vorhandene Fachwirkung.

  3. BewertenEine Alternative abwägen

    Welche Skalierungsmetrik ist besonders nützlich?

    Lösung mit Begründung ansehen

    Das Alter der ältesten Nachricht zusammen mit Bearbeitungszeit.

Weiter im Lernpfad

Als Nächstes in Kommunikation & APIs: Priority Queue.