我正在尝试从多线程,集群Windows服务正在侦听的oracle表中获取作业。
如果我正在编写SQL,那么查询将是这样的:
update job_queue
set status = :inProcess
where status = :waiting and rownum <= 1
returning job_id into :job_id;
因此,在一次往返中,并且锁定时间与更新语句一样短,一个线程可以使其工作项工作。
问题是如何使用NHibernate实现这一点,以便每个线程都能尽可能快地运行。
答案 0 :(得分:1)
如果您想编写一些代码来为作业队列提供服务,并且您使用Oracle作为数据库,我建议您查看Oracle高级队列(Oracle AQ)。它可以处理多个并发作业,还有许多其他功能。