2017-08-25 1 views
0

私の要件は、一連のメッセージを連続して処理する(Webサービスを呼び出す)ことです。最初のメッセージが成功した場合は、2番目のメッセージのみを処理します。ディレイヤーとスプリッター、シリアルで処理していないメッセージ

ここではスプリッタを使用してメッセージを分割しています。 Splitterの中で私はDelayer(永続性ではない)を使用しました。

問題は、最初のメッセージが完了するのを待つことなく、最初のメッセージがリストア処理の2番目のメッセージを遅延させるとすぐに問題になります。

遅延がスレッドをブロックしないため、これが起こっていると思います。

スプリッタと遅延機能を使用してこの機能を実現できる方法はありますか?

+0

なぜ、遅延を使用するのか説明する必要があります。 –

+0

イベントが完了するのを待ってから、webserviceだけを呼び出す必要があります。私はイベントの完了のためにデータベースをチェックできるように遅延を使用しています。イベントが完了したら、私はwebserviceを呼び出します。 –

答えて

1

遅延器はそのように設計されています。それは、将来何時も処理されるべきメッセージをスケジュールする。分割を処理する速度を遅くしたい場合は、 Thread.sleep(...)を持つPOJOサービス(サービスアクティベータによって呼び出される)を追加して、入力メッセージを返します。

public Message<?> sleeper(Message<?>) throws InterruptedException { 
    Thread.sleep(1000); 
} 
関連する問題