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



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

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

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

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

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

如果您正在使用MSMQ请查看此内容,尤其是标签<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

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

相关内容

  • 没有找到相关文章

最新更新