与NServiceBus合并的应用程序的计划执行

本文关键字:计划 执行 应用程序 合并 NServiceBus | 更新日期: 2023-09-27 18:14:44

我想让一个应用程序每天运行一次,当它启动时,它必须从它订阅的队列中读取所有消息,做一些处理,发布消息,然后关闭。消息是通过NServiceBus发送的,你怎么知道它们什么时候都被处理了?我不知道如何处理队列中的所有消息,并告诉队列何时为空。

与NServiceBus合并的应用程序的计划执行

这听起来像是一个架构问题,而不是NSertviceBus特有的。

这是我将如何解决NSB:

我将让我的端点(订阅者)实现Quartz . net并调度一个作业,该作业将发送指示StartOfBusinessDay(每天)的命令/消息。

我将有一个Saga,从StartOfBusinessDay开始,当Saga初始化时,我将请求一个超时T+(距离工作日结束的小时数)。

此Saga将持续接收消息并将其聚合以供稍后处理。

当TimeOut发生时,处理所有聚合的消息并发布ProcessCompletedEvent以通知任何其他订阅者当天的批处理结束,然后是当天的marksagaccompleted。