我想让应用程序每天运行一次,当它启动时,它必须读取它所订阅的队列中的所有消息,进行一些处理,发布消息然后关闭。这些消息是通过NServiceBus发送的,您如何判断它们何时被处理完毕?我无法弄清楚如何处理队列中的所有消息并告诉队列何时为空。
答案 0 :(得分:1)
这听起来像是一个架构问题,而不是NSertviceBus特定的。
这就是我用NSB解决它的方法:
我希望我的端点(订阅者)实现Quartz .Net并安排一个作业,该作业将发送一个指示StartOfBusinessDay(每天)的命令/消息。
我会有一个Saga,从StartOfBusinessDay开始,当saga初始化时,我会请求一个T +的TimeOut(工作日结束时间)。
此佐贺将不断接收消息并将其汇总以供日后处理。
当您的TimeOut发生时,处理所有聚合消息并发布ProcessCompletedEvent以通知任何其他订阅者当天结束批次已完成,然后MarkSaga完成当天。
希望这有帮助。