2011-11-08 14 views
5

私は複数のステップをステージ1からステージ2からステージ3からステージ4に持っているので、プロデューサはコンシューマになり、各ステージで複数のcpusを使用する複数のプロデューサ/コンシューマです。場合によっては、いくつかのパケットがステップを逃してしまう、つまりステージ1からステージ4にまっすぐ進む。Java 6で複数のプロデューサ/コンシューマパターンを実装する最良の方法

私はステージごとにクラスを用意して、前のステージでBlockingQueueを共有するつもりだったが、 ExecutorServiceはプロデューサー/コンシューマーのパターンのように機能しますので、最高の抽象化を試みています。

しかし、Executorを使用すると、プロデューサのビットが実行者に送信される前に、私が望むものとは異なる順序で実行されるように思えます。

誰でも明確にできますか?

+0

私は、このチェーンとスケジューリングとシーケンスを、私たちのカスタムを実装するのではなく、ApacheのサービスミックスのようないくつかのSOAツールに任せておくことをお勧めします。しかし、エンドポイントは複数の消費者として呼び出すことができます。私はこれを手動で実装するには変数や制御の問題が多すぎると思います。ちょっとした考え。 – r0ast3d

答えて

1

BlockingQueueではなく、各段階でjava.util.concurrent.CompletionServiceが必要です。

+0

ええ、私は自分の結論に来て自分自身 –

関連する問題