2011-11-13 84 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