2016-10-11 1 views
1

Ich habe einen Scheduler, der einen Wert (N oder Y) in ein Thema für alle 10 Minuten (normalerweise 'N', wenn etwas nicht normal mit Thema passiert). Wenn das Thema ausfällt, füllt der Scheduler eine Eigenschaft (Art der Inter-Scheduler-Kommunikation), so dass sie während des nächsten Zyklus des Schedulers verwendet werden kann, um dem Scheduler mitzuteilen, dass während des letzten Zyklus etwas Schlimmes passiert ist, so dass es setze in diesem Zyklus einen anderen Wert ('Y') in das Thema ein. Aber das Problem hier ist normaler Austausch Eigenschaft hilft nicht. Die Eigenschaft ist in jedem Scheduler-Zyklus immer Null. Gibt es eine Möglichkeit, globale Eigenschaft in Apache Camel zu verwenden

Als ich die http://camel.apache.org/schema/blueprint/camel-blueprint.xsd ging durch, auf der Suche nach etwas ähnlich wie globalen Eigenschaften, ich habe diese eine „tns: Eigenschaften“ die auf Kontextebene eingestellt werden kann. Kann dies als eine globale Eigenschaft verwendet werden? gibt es eine Möglichkeit, es in meiner Scheduler-Route zu lesen/schreiben?

Ich denke auch über eine Bean mit einer Instanzvariable, um diese Inter-Scheduler-Kommunikationseigenschaft zu halten.

Kann jemand die richtige Option vorschlagen?

Antwort

0

Was Sie beschrieben haben klingt für mich wie ein Mittel zur Aufrechterhaltung des Zustands zwischen Prozessen, und die Verwendung der Eigenschaften dafür wird aus einer Reihe von Gründen problematisch sein.

Ich empfehle, die App in ein paar verschiedene Teile zu brechen und einen gemeinsamen OSGi-Dienst zu verwenden, um den Status beizubehalten.

Route 1: Timer startet die Aufgabe .. überprüfen Sie den Dienst für Werte .. senden Ereignis. wenn Fehler auftreten, sendet Fehlermeldung zu einem gewissen Warteschlange: //MY.ERRORS

Route 2: Fehler auf MY.ERRORS Hören und den OSGi Service mit neuen Werten aktualisieren

Dies gibt Sie über das Verhalten zu steuern und Sie können ändern, wie der „Stateful-Service“ seine Daten speichert .. entweder im Speicher auf der Festplatte als Datei oder in einem Cache“und Ihre Routen werden nie die Besonderheiten kennen.

0

einen Blick auf http://camel.apache.org/properties.html Nehmen

Es scheint genau zu sein, nach dem du suchst - Kontexteigenschaften: Du kannst einen Eigenschaftswert für jeden Zyklus festlegen und es wird auch funktionieren Ich bin auch im nächsten Zyklus verfügbar.

+0

vielen Dank !!! – krisp

Verwandte Themen