2010-11-03 6 views
8

Ich habe einen JMS-Server mit HornetQ als JMS-Provider (Warteschlange) eingerichtet.Reihenfolge der Nachrichten mit HornetQ erzwingen

Ich habe eine Anwendung, die als ein Produzent und ein anderer (anderer Computer) als ein Verbraucher fungiert.

Ich verstehe, dass die JMS-Spezifikation nicht die Reihenfolge der Lieferung nicht garantiert, aber ich bin auf der Suche nach einem Weg, genau das zu tun: erhalte die Nachrichten genau in der Reihenfolge, wie sie gesendet wurden, auch wenn es Anbieter sind Spezifisch.

Irgendwelche Ideen?

Antwort

2

Offenbar kann dies durch Deaktivieren des Consumer-Cache erreicht werden. Dies wird durch eine Änderung der hornetq-jms.xml getan:

<connection-factory name="ConnectionFactory"> 
     <connectors> 
     <connector-ref connector-name="netty-connector"/> 
     </connectors> 
     <entries> 
     <entry name="ConnectionFactory"/> 
     </entries> 

     <consumer-window-size>0</consumer-window-size> <!-- add this line --> 
    </connection-factory> 
+1

Wenn Sie jedoch die Fenstergröße auf 0 setzen, haben Sie effektiv eine Zwischenspeicherschicht gelöscht, die die Leistung beeinträchtigt. –

+0

In meinem Fall ist die Reihenfolge der Nachrichten viel wichtiger als ein möglicher Leistungsverlust. Aber wenn du eine bessere Idee hast, würde ich es gerne hören. Vielen Dank. – Bogdan

+0

Das Einstellen dieser Option hat bei mir nicht funktioniert, wurde lokal mit HornetQ 2.2.5 getestet. Ein Client erzeugt eine Nachricht, eine konsumiert, die Reihenfolge ist nicht sequentiell. – Dag

1

Eigentlich Abschnitt 4.4.10.2 (Order of Message Sendet) der JMS-Spezifikation ist ziemlich klar zu sehen.

Wenn Sie einen einzelnen Producer und einen einzelnen Consumer für eine Warteschlange oder ein Topic-Abonnement haben, ist die Nachrichtenreihenfolge auch bei Neuzustellungen immer gewährleistet.

Wenn mehrere Benutzer vorhanden sind, wird die Clientpufferung möglicherweise erneut bereitgestellt, wenn Rollbacks ausgeführt oder der Benutzer geschlossen wird. Der Clientpuffer wird möglicherweise nicht mehr bereitgestellt.

Auf HornetQ haben Sie auch die Nachrichtengruppe, die zusätzliche Einschränkungen für die Produktion der erzeugten Nachrichten berechtigt.