C# 从NServiceBus主机发送消息

C# 从NServiceBus主机发送消息,c#,nservicebus,nservicebus3,C#,Nservicebus,Nservicebus3,我们有一个审计消息处理程序,如果在该处理程序中引发任何异常,我们希望它向LogMessageInputQueue发送一条日志消息,该消息将由另一个消息处理程序处理 是否可以从NServiceBus主机进程内发送新消息?AuditMessageHandler在其构造函数中接受处理程序IBU,但在调用 _bus.Send(new LogFatalMessage(ex)); 不会引发异常,但消息不会出现在LogMessageInputQueue上,似乎只是消失了 所有处理程序和队列都在同一台机器上。

我们有一个审计消息处理程序,如果在该处理程序中引发任何异常,我们希望它向LogMessageInputQueue发送一条日志消息,该消息将由另一个消息处理程序处理

是否可以从NServiceBus主机进程内发送新消息?AuditMessageHandler在其构造函数中接受处理程序IBU,但在调用

_bus.Send(new LogFatalMessage(ex));
不会引发异常,但消息不会出现在LogMessageInputQueue上,似乎只是消失了


所有处理程序和队列都在同一台机器上。

好的,我自己解决了:)

在_bus.Send(new LogFatalMessage(ex))之后,我们重新抛出原始错误,这将导致NServiceBus回滚其事务并从LogMessageInputQueue中删除该消息

通过将_bus.Send()包装在它自己的事务中,我们可以阻止NServiceBus事务从队列中删除LogMessage的回滚

using (var ts = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    _bus.Send(new LogFatalMessage(ex));
    ts.Complete();
}

如果您使用的是v3,我将介绍如何实现IManageMessageFailures接口来执行异常处理工作。@Adam我们使用的是v3,但不知道该接口,我将介绍一下