Wir haben HornetQ nun seit ein paar Wochen untersucht.So verhindern Sie eine doppelte Zustellung in HornetQ
In unserem Geschäft haben wir viele "Delta" Nachrichten und (leider ...) sie sind nicht versioniert (und da dies ein internationaler Standard ist, werden sie nicht werden versioniert). Dies bedeutet, dass offensichtlich zweimal die gleiche Nachricht ausgesendet wird. Dennoch bestätigt der Standard, dass dies nicht wirklich vermieden werden kann, und weisen den Absender an, die Nachricht als mögliche Duplikate in diesem Fall zu kennzeichnen.
ich durch HornetQ Dokumentation ausgelagert und es spricht zu vermeiden viel über das Duplizieren vom Server empfangen, aber ich kann nichts über die Vermeidung Herstellung Duplikate finden.
klarer zu sein, die folgende Situation annehmen:
- 1 HQ-Server
- 1 Verbraucher
Im Nenn Szenario nimmt der Verbraucher eine Nachricht in der Warteschlange, schicken Sie es an eine dritte Partei, und beim Empfang der Bestätigung, quittieren Sie die Nachricht an den Server, so dass es aus der Warteschlange entfernt wird.
Jetzt ist der Schwachpunkt hier der ack Teil. Es ist möglich, dass die dritte Partei die Nachricht empfangen und verarbeitet hat, aber (aus irgendeinem Grund) schlägt die Bestätigung fehl und die Nachricht ist nicht aus der Warteschlange.
ich es erkennen, ist nicht möglich, für HQ zu wissen, dass die Nachricht vollständig geliefert wurde, aber ich würde es erwarten, dass die Lieferung zu wissen, wurde bereits versucht und dass es durchaus möglich, dass die Nachricht sein wird ein Duplikat , soweit der Dritte betroffen ist.
Gibt es eine Möglichkeit für den Verbraucher über diese möglicherweise bereits Status ausgegeben informiert werden, so dass es die Nachricht entsprechend kennzeichnen kann?
'JMSXDeliveryCount' großartig! Ich fand das Äquivalent in der 'ClientMessage' API:' getDeliveryCount'. –