使用NServiceBus 4.3我想在發生某些情況時向錯誤隊列發送消息。首次將消息發送到錯誤隊列
這種情況是,當我收到一條消息時,檢查這條消息是否指向我們數據庫中的一個或多個項目。如果有多個參考文獻,我會投一個AmbiguousItemException
並抓住它。我需要通過電子郵件向負責人發送正確的信息。所有這一切都想通了,但我不希望這個消息再次嘗試。相反,我寧願將它移動到錯誤隊列中,以便當我們取回所需的信息時,我們可以添加可空屬性並將消息放回隊列中進行處理。我試過使用_bus.ForwardCurrentMessageTo("error")
,_bus.Send("error", message)
,_bus.SendLocal(message)
。最後一個基本上把信息放在無限循環中。代碼就是這樣的。
public class MoveToErrorQueue
{
private readonly IBus _bus;
public MoveToErrorQueue(IBus bus)
{
_bus = bus;
}
public virtual void Send(ResubmitMessage message)
{
message.Foo= -1;
_bus.Send("error", message);
}
}
,並調用它
try
{
//removed for brevity
}
catch (AmbiguousItemException ex)
{
Log.Error(ex);
sendNotificationCommand.FailureMessage = ex.Message;
_moveToErrorQueue.Send(commandMesage);
}
SendNotification(sendScanningNotificationCommand);
所以這可能會工作,但與球隊交談後,我們決定不排隊的通知命令,並只讓消息錯誤並移動到錯誤隊列。 –
通知命令可以直接回到佐賀,它可以處理它本身。這也只是一個建議。您可以輕鬆地在表格中添加記錄或向自己發送電子郵件等。混淆錯誤隊列並不是推薦的方法。它不是它設計的。我不會推薦。 –
只需要注意一下,我認爲@ColinPear意味着錯誤隊列不應該成爲所有業務驗證錯誤的抓手。 –