我继承了一个实现多个长时间运行进程的项目。每个进程都会更新一个状态表,然后通过ajax轮询在UI上反映出来。这些进程在使用Rhino Service Bus(带有MSMQ)的后台应用程序中运行,并且通过发送"执行长进程"来触发该进程。消息。
该过程本身在许多表上进行各种数据操作,验证,更新,插入删除等。
似乎它真的滥用NHibernate会话,多个会话和嵌套的TransactionScopes到处都是。
我对NHibernate / RSB专家的问题是,如何在执行长时间运行的过程中更新状态表?
我想过:
答案 0 :(得分:0)
RSB流程中状态更新的问题通常是,消息处理在事务范围内发生。这意味着对数据库或您发送的消息的任何更改只会(通常)在提交事务后(通常在处理消息完成时发生)对其他应用程序可见。
我通常采用3种方法: