Wir haben ein Szenario wie folgt aus:Wie mache ich eine automatische Wiederholung der Nachricht, wenn ich Rabbitmq benutze, und setze ttl = 0?
Es kann viele Arbeiter sein (a.k.a Verbraucher) in mehreren Knoten, an der mittlerweile Webapp Online-Arbeitsplätze zu dieser Arbeitnehmer vorlegen wird. Wir müssen diese Jobs gleichmäßig verarbeiten und wissen, ob für jeden einzelnen Job Mitarbeiter verfügbar sind. Daher möchten wir Rabbitmq verwenden, um Jobs zu planen und jede Jobmeldung einzustellen, um benachrichtigt zu werden, wenn für jeden Job kein Mitarbeiter vorhanden ist. Aber wir wollen auch, dass Rabbitmq die Job-Umplanung beim Absturz des Workerknotens übernimmt. Wenn ttl
jedoch auf 0 gesetzt ist, wird Rabbitmq die Jobnachricht einfach abbrechen, wenn ein Mitarbeiter abstürzt oder ein Netzwerkfehler auftritt.
Ich weiß, wir können DLX verwenden, um tote Nachrichten zu behandeln, aber es ist peinlich, ein Modul zu erstellen, um diese Ausnahmen zu behandeln, da ich hohe Verfügbarkeit für es vornehmen muss. Das wichtigste ist, dass ich nicht unterscheiden kann von Scheduling Scheitern und Scheduling Scheduling, das ist sehr anders zu handhaben!
Habt ihr noch andere Ideen?
danke für Ihre Antwort. Aber du hast mein Problem nicht verstanden. Ich muss die Nachricht ablaufen lassen, wenn kein Mitarbeiter verfügbar ist. Aber wenn ich die Nachricht TTL auf 0 setze, wird der Broker Nachrichten nicht neu planen, weil er bestätigen wird, dass die Umplanungsnachrichten abgelaufen sind. –
@JinMa in diesem Fall DLX wie du erwähnt hast, in meiner Erfahrung ist es nicht wirklich so wählerisch :) – cantSleepNow
yep, ich kann DLX und DB verwenden, um meine Arbeit zu vervollständigen. aber ich will einfach einen leichteren Weg –