0

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

逻辑是:1)接收一个长期进程的命令,2)将其分成N个操作,3)每个操作“打包”到消息中并推送到队列中,4)根据消息的类型,特定的handler将处理消息并执行它所持有的操作。

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

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

4

1 回答 1

0

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

如果您正在使用MSMQ检查这个,尤其是标签<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

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

于 2012-11-23T12:36:44.170 回答