使用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意味着错误队列不应该成为所有业务验证错误的抓手。 –