Frage

Ich verwende ActivemQ als Broker, um Nachrichten zu liefern.Diese Nachrichten sind in einer Dabatase geschrieben.Manchmal ist die Datenbank nicht erreichbar oder unten.In diesem Fall möchte ich meine Nachricht umsetzen, um später diese Nachricht erneut zu versuchen, und ich möchte weitere Nachrichten lesen.

Dieser Code funktioniert in Ordnung, außer einem Punkt: Die Rollback-Nachricht blockiert mich daran, die anderen zu lesen:

generasacodicetagpre.

Ich erstelle meine Sitzung auf diese Weise:

generasacodicetagpre.

Rollback ist einfach zu fragen:

generasacodicetagpre.

Stellen Sie sich vor, ich habe 3 Nachrichten in meiner Warteschlange:

generasacodicetagpre.

Mein Verbraucher wird dies tun (lineare Reihenfolge):

generasacodicetagpre.

aber ich will:

generasacodicetagpre.

Also, wie kann ich meinen Verbraucher so konfigurieren, dass ich später meine Rollbacked-Nachrichten verzögert?

War es hilfreich?

Lösung

Dies ist eigentlich erwartetes Verhalten, da Nachrichten-Wiederholungen vom Client von dem Client behandelt werden, nicht der Broker.Da Sie also 1 Sitzungsgebunden haben, und Ihre Wiederholungsrichtlinie ist für die 3 Wiederholungen vor dem DLQ eingerichtet, dann blockiert der gesamte Wiederholungsvorgang diesen bestimmten Thread.

Also, meine erste Frage ist, dass, wenn die Datenbankeinsatz fehlschlägt, nicht, dass der Rest Ihrer dB-Inserts aus einem ähnlichen Grund ausfällt?

Wenn nicht, der Weg, um dies zu erreichen, besteht darin, die Wiederholungsrichtlinie für diese Warteschlange zu setzen, um 0 Wiederholungen mit einem bestimmten DLQ zu sein, so dass Nachrichten sofort ausfallen und in den DLQ gehen.Dann haben Sie einen weiteren Prozess, der alle 5 Sekunden vom DLQ abzieht und / oder / oder in die Hauptwarteschlange zur Verarbeitung zurückversetzt.

Andere Tipps

Verwenden Sie den <strictOrderDispatchPolicy /> in der Datei ActiveMQ XML-Konfigurationsdatei?Ich bin mir nicht sicher, ob dies die Reihenfolge der Meldungen für die Wiedereinwicklung beeinflusst oder nicht.Wenn Sie einen strikten Auftragsabtrag verwenden, kommentieren Sie, dass die Richtlinie angezeigt wird, ob dies das Verhalten ändert.

bruce

Ich hatte das gleiche Problem, ich habe hier nicht Lösung gefunden, also beschlossen, es hier zu posten, nachdem ich einen für Leute gefunden habe, die mit demselben kämpften. Dies ist vor Version 5.6 festgelegt, wenn Sie Eigentum NonblockingRedelvorrichtung in Verbindung in Verbindung in Verbindung setzen:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top