从表中挑选工作的最佳实践 - NHibernate

时间:2012-05-05 08:45:03

标签: c# oracle nhibernate

我正在尝试从多线程,集群Windows服务正在侦听的oracle表中获取作业。

如果我正在编写SQL,那么查询将是这样的:

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

因此,在一次往返中,并且锁定时间与更新语句一样短,一个线程可以使其工作项工作。

问题是如何使用NHibernate实现这一点,以便每个线程都能尽可能快地运行。

1 个答案:

答案 0 :(得分:1)

如果您想编写一些代码来为作业队列提供服务,并且您使用Oracle作为数据库,我建议您查看Oracle高级队列(Oracle AQ)。它可以处理多个并发作业,还有许多其他功能。