2016-05-04 4 views
1

Hallo Artem/Gary/Freunde,Wie kann überprüft werden, ob einer der Kanäle im Federintegrations-SI-Fluss im Verarbeitungszustand ist?

Es gibt eine Anforderung, wo ich mein Ohr auf Anwendungsserver auf PROD bereitstellen muss. Der Lösungsfluss beginnt mit dem JMS Message Listener im SI-Ablauf und das gesamte Framework basiert auf SI, wobei wir den JDBC-Ausgangsadapter des Verzögerungsaggregators verwendet haben. Jetzt vor der Bereitstellung muss ich wissen, dass kein Live-Thread im SI-Fluss aktiv ist (dh die Verarbeitung wurde vom gesamten Kanal abgeschlossen und es gibt keine Live-Nachricht dazwischen), sodass ich mit der Bereitstellung von EAR auf meinem Anwendungsserver beginnen kann . Da ich den Steuerbus verwendet habe, um den Nachrichten-Listener zu stoppen, muss ich aber auch wissen, dass die Nachrichtenverarbeitung abgeschlossen wurde und keine Live-SI-Nachricht im Datenfluss vorhanden ist.

Können Sie bitte helfen.

Dank Ram

Antwort

0

Na ja, eigentlich bin ich nicht sicher, warum Sie darüber keine Sorgen. Jede erneute Bereitstellung führt dazu, dass die Anwendung gestoppt und Ressourcen gelöscht werden. Daher werden keine Thread-Aktivitäten mehr ausgeführt.

Obwohl Sie in Betracht ziehen können, SmartLifecycleRoleController für den Zweck zu verwenden wie für alle kritischen Endpunkte die gleichen zuweisen role und rufen Sie stopLifecyclesInRole(), wenn Sie benötigen.

Auf der anderen Seite bedeutet der Endpunkt stop, dass er keine neuen Nachrichten vom channel (oder Quellsystem wie JMS) konsumiert. Richtig, jeder lang laufende Thread ist immer noch aktiv und möglicherweise sogar mit einem Prozess um die Nachricht herum. AFAIK Der Container versucht, alle aktiven Threads für die Anwendung zu finalisieren und unterbricht schließlich, wenn nicht anders. Für diesen Fall sollten Sie auf jeden Fall eine Transaktions/Announcement-Zurückweisungssemantik für kritische Daten sicherstellen. Daher endet jeder unvollendete Prozess mit dem Rallback/Nack-Status für die Nachricht. Und eine neue Instanz Ihrer Anwendung kann erneut für diese Nachricht beginnen.

Ich habe keine Antwort auf einen Haken, um die Thread-Aktivität zur Laufzeit zu überprüfen. Aber ich frage mich, ob Sie in der Lage sein werden, etwas wie claim-check zu warten, bis sending Teil ist processed nach dem JMS Inbound Endpoint zu stoppen.

Verwandte Themen