Was passiert, wenn eine Meldung wird zurückgesetzt, im MQ?
Erhalte ich eine Nachricht von einer WebSPhere MQ-Warteschlange. Ich versuche zu verarbeiten und wenn ich bekomme einige Ausnahmen, an die ich zurücksetzen möchten Sie die Nachricht an die MQ-Warteschlange.
Ich habe keine Probleme in das gleiche tun. Was passiert mit der Meldung? Geht es um die Unterseite der Warteschlange?
Wenn ich versuche, und ziehen Sie eine Nachricht aus der Warteschlange würde ich dieselbe Meldung, dass ich rolledback?
Was ist das Verhalten wahrscheinlich? Ich möchte wissen, ist dieses Verhalten in der Regel in einem high-volume-Warteschlange Szenario?
Schätze alle Eingaben.
Dank,
Manglu
InformationsquelleAutor Manglu | 2009-05-26
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie das tun, queue-Operationen im Rahmen einer Transaktion, ein rollback erfolgt, dann, nachdem die Transaktion löst die queue und die Nachricht wird angezeigt, genauso wie vor der Transaktion begann. In anderen Worten, die keine änderungen an allen.
In einem high-volume-Szenario ist es jedoch typischerweise mehrere Transaktions-Leser und Schreiber auf einer einzigen Warteschlange, und Sie nicht sperren die gesamte Warteschlange für jede de-queue oder Warteschlange.
Diese Leser und Autoren einfügen von Elementen in die Warteschlange oder entfernen von Elementen aus der Warteschlange transaktional, während Ihr verdammt Transaktion ist die Lösung. In diesem Fall, andere queue-Objekte können erscheinen oder verschwinden (oder beides).
Wenn nach dem rollback der Transaktion, Sie wieder zu entfernen aus der Warteschlange, Sie kann Holen Sie sich die original-Nachricht, aber Sie können nicht. In einem high-volume -, high-concurrency-Szenario, es ist möglich, dass ein anderer Leser gezogen haben, die Nachricht, bevor Sie Ihren code so machen kann.
InformationsquelleAutor Cheeso
Rollback-Blätter die Nachricht in die Warteschlange und legt es für eine erneute Zustellung.
Jedoch, wenn ein (konfigurierbares) limit der Leistung-versuche erreicht wurde, wird die Nachricht auf die Seite gelegt wird auf das "dead letter queue".
Ein typisches Beispiel, wo dies passiert sind.c. 'poison messages": Meldungen, die nicht behandelt werden, aufgrund von fundamentalen und nicht-vorübergehenden Problemen (wie einem ungültigen format, fehlende Felder, etc).
So, bevor Sie die rollback (und steckte die Nachricht wieder in die Warteschlange), stellen Sie sicher, um darüber nachzudenken, ob der Fehler transient ist (wie verbindungen zu back-end-kaputt") oder nicht.
Im letzteren Fall ist es am besten schlucken Sie die Nachricht, und melden Sie einen Fehler oder Feuer einige andere Warnung. Andernfalls wird die Nachricht unnötig verbrauchen beide Rechenleistung und queue-Infrastruktur.
HTH
Kerl
InformationsquelleAutor Guy Pardon
Beantworten Sie ein paar konkrete Punkte aus diesem thread...
InformationsquelleAutor T.Rob