2017-06-19 4 views
0

Ich bin ein neuer Benutzer der ActiveMQ-Technologie, und ich habe ein Problem bei der Annäherung an diese Technologie.ActiveMq: persistente Warteschlange und Offline-System

Ich habe folgende Situation:

  1. Ich habe einen SW, in einem eingebetteten (offline) ARM-Gerät ausgeführt wird, die eine Reihe von Videos auf einem upluggable Festplatte zur Laufzeit archivieren.
  2. Manchmal (4-5 Ereignisse pro Tag) muss ich diesen Videos ein Alarmereignis zuordnen und den Alarm in einer persistenten Warteschlange einreihen.
  3. Einmal im Monat haben wir die Festplatte zu extrahieren und sie an einem anderen eingebetteten Online ARM-Gerät anschließen, das sollte einen ActiveMQ-Server über die von dem offline ARM-Gerät erzeugten Alarme benachrichtigt

Und Nun meine Frage: Wie kann ich die persistente Warteschlange auf der Festplatte speichern, so dass die vom Offline-ARM-Gerät generierten Ereignisse dem Online-ARM-System zur Verfügung stehen (), ist die einzige "Verbindung" zwischen online und offline eingebettetem Gerät Festplatte)?

Bitte beachten Sie, dass ich die Art, wie ich Nachrichten an den Online-Server übertrage, nicht ändern kann, da es sich um ein System handelt, das nicht von meiner Firma entwickelt wurde.

Mit freundlichen Grüßen

Giovanni

Antwort

1

Es klingt wie Sie wollen ein "store-and-forward" Messaging-Muster. Sie könnten den ActiveMQ-Offline-Broker so konfigurieren, dass er versucht, eine Verbindung mit dem ActiveMQ-Online-Broker herzustellen. Der Netzwerk-Connector versucht in konfigurierbaren Abständen eine Verbindung herzustellen, und wenn er "online" ist, beginnt er automatisch Nachrichten zu senden.

Der leichte Nachteil ist, dass der Broker versucht, eine Verbindung mit dem Remote-Broker herzustellen (auch wenn offline), so dass Sie Log-Rotation oder Logging-Ebenen verwalten müssen.

Blick für die statische: // Netzwerkanschluss uri

Network of brokers

+0

Hallo Matt, ich glaube, ich den vorgeschlagenen Ansatz verstehen. Wenn die Karte A für 2 Tage offline ist und der dritte Tag über den statischen Anschluss mit dem Host C verbunden ist, auf dem der "Server" ausgeführt wird, werden die Nachrichten in der Warteschlange ordnungsgemäß zugestellt. Allerdings habe ich Zweifel bezüglich meines Systems: Gerät A ist offline und generiert Nachrichten; Die Festplatte wird einmal pro Woche von A getrennt und mit B verbunden, eine Karte mit derselben SW, die auf A läuft, aber mit dem ActiveMq Server Broker verbunden ist. Ich verstehe nicht, wie Nachrichten von ActiveMq auf Board A an Server C von Board B geliefert werden können. – Giox79

+0

Wenn der Speicherort der ActiveMQ Kahadb-Dateien im selben Verzeichnis über alle Boards ist und die ActiveMQ-Version ist Das selbe: Die SW an Bord B sollte den Broker anwerfen, die von A auf der Festplatte gespeicherten Nachrichten lesen und an Server C übergeben. –

+0

Eine andere Option könnte eine kompensierende Transaktion oder ein Dateisystem-als-eine-Warteschlange-Ansatz sein. Speichern Sie die Dateien in einem Ordner, lassen Sie einen Prozess erkennen, wenn der Speicher angeschlossen ist (Dateisystemmonitor oder Cron-Job), und veröffentlichen Sie die Nachrichten dann auf dem Server auf dem Server C, wenn ein Verbindungstest bestanden wird. –

Verwandte Themen