1

マルチスレッドのクラスター化された Windows サービスがリッスンしている Oracle テーブルからジョブを取得しようとしています。

私が SQL を書いていた場合、クエリは次のようになります。

update job_queue 
set status = :inProcess 
where status = :waiting and rownum <= 1 
returning job_id into :job_id;

そのため、たった 1 回のラウンド トリップで、更新ステートメントと同じくらい短いロック時間で、スレッドはそのジョブ アイテムを処理することができます。

問題は、各スレッドが可能な限り高速に実行できるように、NHibernate でこれをどのように実装できるかということです。

4

1 に答える 1

1

ジョブのキューを処理するコードを記述し、データベースとしてOracleを使用している場合は、Oracle Advanced Queuing(Oracle AQ)を確認することをお勧めします。複数の同時ジョブを処理でき、他にも多くの機能があります。

于 2012-05-05T09:04:52.730 に答える