2009-03-19 4 views
2

Ich denke über eine Architektur nach, in der ich Clients habe, die zeitweise mit einem Netzwerk verbunden sind. Ich möchte Nachrichten, die auf diesen Clients erstellt wurden, in einer JMS-Warteschlange speichern, wenn das Netzwerk nicht verfügbar ist, und diese an einen zentralen Nachrichtenbroker weiterleiten, wenn sich die Clients im Netzwerk befinden. (Der Benutzer hat die Kontrolle über das Netzwerk, z. B. Einwählen, so dass es keine unterbrochene Verbindung wie mit einem Mobiltelefon ist.)Gibt es mit JMS eine Möglichkeit, Nachrichten auf zeitweise getrennten Clients zu speichern und an einen Broker weiterzuleiten, wenn ein Netzwerk verfügbar ist?

Gibt es JMS-Implementierungen, die diese Funktion bereitstellen?

Antwort

1

Sie können einen activeMQ Broker in Ihre Anwendung einbetten

http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

Dann, nehme ich an (nicht getestet), die Sie ActiveMQ Funktionen verwenden können, die erlauben Sie Nachrichten ein Netz von Brokern accross zu versenden, mit die Entdeckung von Brokern Merkmal

http://activemq.apache.org/clustering.html

oder einfach durch eine Warteschlange Verbraucher Serverseite das Hinzufügen, dann durch andere Broker durch diese Nachteile Dispatching um.

Ich hoffe, es hilft.

+0

Möchte diese Warteschlange auch persistent machen. – Robin

+0

Interessant! Ich habe ActiveMQ als JMS-Provider evaluiert. Gibt es eine Möglichkeit, programmgesteuert zu steuern, ob der eingebettete Broker versucht, Nachrichten zu senden? Ich möchte den Broker deaktivieren, wenn der Client nicht bereit ist, Nachrichten zu senden. –

0

Die offene Message Queue von Glassfish kann in Version 4.4 eingebettet (oder eigenständig ausgeführt) werden. (Unterstützt die Möglichkeit, dass ein Broker "in Bearbeitung" mit einem beliebigen Client ausgeführt wird.). Es ist sehr leicht und wird andere Client-Sprachen über das STOMP-Protokoll in Version 4.4 - neben Java und C - unterstützen. https://mq.dev.java.net/4.4.html