使用自己的队列作为长期流程操作的持有者的应用程序

时间:2012-11-23 08:54:49

标签: nservicebus long-running-processes

我想制作一个长期的流程处理程序并使用NServiceBus。 NServiceBus的作用是保存该进程的操作(某种批处理) 问题是我有多种类型的长期进程,并且每个进程必须并行运行,所以我认为将所有消息推送到一个队列中并不是我必须做的。

逻辑是: 1)收到长期流程的订单, 2)将其划分为N个操作, 3)每个操作“打包”到消息中并推入队列, 4)根据消息的类型,特定处理程序将处理消息并执行它所持有的操作。

我无法将所有操作放在一个队列中,因为我的应用程序应该处理另一个需要快速响应的消息。如果队列中充满了操作,则另一条消息会等待很长时间才能被处理

那么,有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您应该在长时间运行的流程端点的访问队列配置设置中正确设置工作线程数。

如果您使用的是MSMQ,请查看this,尤其是标记<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

每个空闲工作线程从队列中提取一条消息,尽管另一个线程仍在处理另一条消息。通过这种方式,您可以实现在场景中描述的并行计算要求。

相关问题