2011-01-02 5 views
3

Ich möchte das Konzept der JMS Themen mit HornetQ Kern API übersetzen.Ohne den JMS Wrapper zu verwenden, wie man JMS Thema w/HornetQ Kern API emuliert

Das Problem, das ich von meiner kurzen Untersuchung sehe es scheint, die Hauptklasse JMSServerManagerImpl (von Hornetq-jms.jar) verwendet Jndi, um die verschiedenen Mitarbeiter zu koordinieren, die es benötigt. Ich möchte Jndi vermeiden, da es nicht selbstständig ist und ein global geteiltes Objekt ist, was ein Problem ist, besonders in einer osgi-Umgebung. Eine Alternative ist das Kopieren ab JMSServerManagerImpl, aber das scheint eine Menge Arbeit zu sein.

Ich hätte lieber eine Bestätigung, dass mein Ansatz, zu emulieren, wie Themen in Hornetq unterstützt werden, der richtige Weg ist, um dieses Problem zu lösen. Wenn jemand über genügend Wissen verfügt, können sie vielleicht einen Kommentar dazu abgeben, was ich denke, ist der Ansatz, meine eigene Emulation von Themen unter Verwendung der Kern-API zu schreiben.

NAHME

  • , wenn eine Nachricht Verbraucher fehlschlägt (via Rollback) der Behälter versuchen, die Nachricht an einen anderen verschiedenen Verbraucher für das gleiche Thema Deliverying.

EMULATION

  1. Wrap jede Nachricht, die für das Thema hinzugefügt wird.
  2. Absender sendet Nachricht mit einer Bestätigungsroutine.
  3. der Wrapper für (1) würde Rollback nach dem tatsächlichen Hörer kehrt zurück.
  4. der Absender dann erkennt Lieferung

Ich gehe davon aus nach 4 der msg, nachdem sie gegeben an alle msg Empfänger geliefert wird. Wenn ich irgendwelche Fehler gemacht habe oder meine Annahmen falsch sind, bitte Kommentar. Ich bin mir nicht sicher, ob diese Annahme, wie Bestätigungen funktionieren, korrekt ist, also wären alle Zeiger nett.

Antwort

3

Wenn Sie versuchen, herauszufinden, wie Sie mithilfe der Kern-API eine Nachricht an mehrere Konsumenten senden können; hier ist, was ich empfehlen

  1. 1 Erstellen Warteschlange und binden
  2. erstellen Warteschlange 2 und binden an address1 address1 zu
  3. Make Warteschlange N und binden, um eine Nachricht auf address1 Adresse 1

  4. senden

  5. starten N Verbraucher, wo jeder Verbraucher auf Warteschlange hört 1-N

So funktioniert es grundsätzlich wie ein Thema.