2011-11-13 53 views
0

在内的申请的Executon我想有一个应用程序运行,每天一次,并在启动时,它必须读取所有从队列它订阅,做一些处理,发布的消息,然后关闭的消息。消息已经通过NServiceBus发送,你怎么知道他们什么时候全部被处理了?我无法弄清楚如何处理队列中的所有消息,并告诉队列何时为空。计划与NServiceBus

+0

为什么你希望应用程序在队列为空时完成? –

+0

NSB会保持时间表还是将其作为一些外部实体? –

+0

计划将由计划任务运行,并且在业务结束后每天仅运行一次。一旦业务关闭,任务将运行,处理队列中的所有消息,然后再次关闭。 – Fellmeister

回答

1

这听起来像它的建筑问题,而不是具体的NSertviceBus。

这是我如何与NSB解决它:

我有我的终点(用户)实施Quartz .Net和调度作业,将发送一个命令/消息,指示StartOfBusinessDay(每天)。

我想有一个佐贺,由StartOfBusinessDay启动并且当佐贺被初始化时,我请求T +的超时(小时结束营业日)。

这个传奇将继续接收邮件,后来它们聚集进行处理。

当你的超时发生时,过程对所有的消息和发布ProcessCompletedEvent通知其他所有用户的那一天批结束时完成,那么MarkSagaCompleted的那一天。

希望这会有所帮助。

+0

现在,我可以与之合作。 – Fellmeister

+0

StartOfBusinessDay将基本上是上一个工作日结束后的第二个,以捕获刚刚错过切断的任何消息。传说如何映射到一天中的消息? – Fellmeister

+0

可以。StartOfBusinessDay可以安排在超时后触发第二秒。此外,没有必要将消息映射到佐贺,因为只有一个佐贺活动并准备好接收消息。 – Sarmaad