2016-07-07 2 views
1

トリガをチェックしているイベントの特定の時間間隔でDBを連続してポーリングしなければならない問題を解決するには、スレッドバリアが正しい方法であるかどうかを確認したいと思っていました。プロジェクト。スレッドバリアが動作するには常に2つのスレッドが必要ですか?

また、スレッドバリアが動作するには常に2つのスレッドが必要ですか?中断されたスレッドとトリガースレッド。従って、現在のスレッドがブロックされて

Message<?> releaseMessage = syncQueue.poll(this.timeout, TimeUnit.MILLISECONDS); 

答えて

0

BarrierMessageHandlerは同じ論理に基づいています。

そのブロックを解放するには、その値がSynchronousQueueである別のスレッドが必要です。

+0

ありがとうございます! DBを呼び出してステータスを確認する際に、スレッドバリアを使用して、受信スレッドを事前定義された待機時間中断させることはできますか。 DBからのステータスが真であれば、それはリリースをトリガするはずです。バリアのタイムアウトを待って再試行してください。私は、着信メッセージとDB結果の両方を相関関係に結びつけることができます。 –

+0

のようになります。しかし、 'barrier'ではなく、DB呼び出しservice-activatorに対して' RequestHandlerRetryAdvice'を使うことを考えてください。 –

+0

こんにちはArtem!簡単な方法があるように見えます。 DBを確認し、Delayerを使用してDBレスポンスに基づいてメッセージを遅延またはプッシュすることができます。ヘッダーに値を保存し、それらのフラグに基づいてRouterを処理することができます。 –

関連する問題