2012-04-13 191 views
2

我正在構建一個使用NSerivceBus的系統,應該只在特定時間段內將消息發送到遠程處理程序。到目前爲止,我設法將所有消息放在一個處理隊列中,並從那裏檢查遠程處理程序的可用性,如果處理程序不可用,則不會通過邊界發送消息。要做到這一點我使用NServiceBus稍後處理消息

Bus.HandleCurrentMessageLater() 

但NSB將繼續嘗試後。它不像其他聽衆將在幾分鐘內啓動並運行,但它可能有幾小時的停機時間窗口,所以這不是很有效。

想知道是否有辦法讓總線在一段時間後重試消息,或者不要在下次重試前重試並等待一段時間。我將使用Sagas,只是簡單的命令/處理程序消息。

回答

5

您可以使用Bus.Defer在3.0版本中經過一定時間後返回消息。

+0

hello udi,我正在使用nservicebus 5.0和5.0 bus.createinstance <>方法已過時,因此爲了進行同步調用,我在4.6.5版中使用了bus.createinstance,但現在我無法遷移我的代碼到更高版本,讓我知道什麼是可能的方式發送答覆回相同的請求,我想要的呼叫應該是同步的。 – Friyank 2015-04-04 09:39:18

+0

CreateInstance被廢棄的原因是因爲它並不是真的需要 - 您可以使用Bus.Reply (lambda創建消息)。 – 2015-04-06 05:50:39