2016-07-19 8 views
1

Ich habe poller Konfiguration wie folgt aus:Frühlings-Integration: Execute poller Trigger durch letzte Meldung aus früheren Umfrage

<int:poller id="myPoller" default="true" max-messages-per-poll="2" task-executor="executor" 
       error-channel="errorChannel" receive-timeout="20000" trigger="dynamicTrigger"> 
    </int:poller> 

aber ich brauche die poller mit zuletzt Nachricht aus früheren Umfrage auszulösen. Beispiel für den Fluss:

Wenn ich 4 (A, B, C, D) Post Ruhe haben wird die App zuerst 2 (A, B) Nachricht verarbeiten und dann auf die letzte Antwort warten (entweder von A oder B), danach die Umfrage für die nächste Nachricht auslösen (C, D).

Wie erreiche ich diesen Zustand? Danke.

Antwort

1

Nun, ich schlage vor, Sie in <advice-chain> von Poller schauen. Mit einigen benutzerdefinierten MethodInterceptor führen Sie Ihre Entscheidungslogik und rufen Sie Ihre Abfragequelle stop(). Wenn Sie irgendwo stromabwärts eine gewünschte Antwort haben, führen Sie einfach start() dieses Endpunkts erneut aus, um mit einem neuen Bündel von Nachrichten fortzufahren.

Mit genug groß polling-interval Sie brauchen nicht, dass <advice-chain> und führen Sie einfach stop() im Downstream auch, über einige State-Checking.

Verwenden Sie auch Control Bus für stop/start Operationen.

+0

Danke Artem. Ich werde versuchen, das zu benutzen – Harji