0

Spring/Quartz を使用して、最初に実行される ProducerJob があります。次に、ProducerJob (DB にレコードを作成する) の結果を待つ必要がある ConsumerJob があります。

ConsumerJob が ProducerJob の結果を通知される最善の方法は何ですか? ConsumerJob にデータベースを常にチェックさせ、ProducerJob がまだ完了していない場合はスリープ/待機させる必要がありますか?

特定の実装は特定されていませんが、私の質問はJobDataMap の Quartz の Pass BlockingQueue に似ている可能性があることを認識しています。ただし、これがどのように実装されるかはまだわかりません。

4

1 に答える 1

2

Producer/Consumer パターンでは、Consumer は Producer が生成するデータを待つ必要があります。データベースを使用して両方を分離したい場合、コンシューマーはポーリングする必要があります。はい。もう 1 つの解決策は、BlockingQueue を使用して、コンシューマーにデータベース エントリの書き込みを許可することです。これにより、データベースの負荷が軽減され、おそらく実装がより簡単になります。また、プロデューサーははるかに高速であるため、このパターンを使用する理由がよくあります。

于 2012-08-12T16:00:12.007 に答える