【发布时间】:2011-10-31 11:39:10
【问题描述】:
我正在创建一个 webservice+servicebus 项目,用户可以在其中执行类似的操作
public void ExecuteLongProcess(DateTime fromDate,string aggregateId){}
此方法立即返回,但通过总线发送操作请求。
我的问题开始于多个用户在另一个已经运行的情况下通过同一个 aggregateId 请求长进程。
我正在考虑的解决方案是一个连续运行的任务,并在Queue<LongProcessTask> 中查找必须执行的操作,因此我一次只运行一个进程,否则如果聚合 ID 不同,未来的实现将是多个进程。
这样我就不会在同一个聚合上重叠长时间运行的进程。
其他想法?
【问题讨论】:
-
当然,非常标准的生产者/消费者场景。线程安全队列和单个线程完成工作。
标签: c# servicebus long-running-processes