2012-05-05 3 views
1

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

私はSQLを書いていた場合は、クエリはこのようなものになるだろう:のみ1回のラウンドトリップで、だから、

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

、およびUPDATE文限り短いロック時間で、スレッドがその仕事を取得します作業する項目。

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

+0

よくある質問...あなたは何を試しましたか? – Reniuz

+0

はい、おそらくかなりの頻度です。単純に、nhibernateで未処理の項目を取得しようとしていて、高性能です。 – Feyyaz

答えて

1

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

+0

これはアイデアですが、私はデータベース中心のソリューションを好まないのです。ちょうどnhibernateで私のクエリを実装することが可能かどうか疑問に思っています。 – Feyyaz

関連する問題