无法将失败的消息转发到错误队列

时间:2013-10-17 14:37:31

标签: nservicebus4

当从处理程序调用的代码中发生异常时,主机会尝试5次,然后使用以下消息关闭服务:

2013-10-17 08:57:12,091 [13] FATAL NServiceBus.Faults.Forwarder.FaultManager [(null)] - 无法将失败的消息转发到错误队列。 Autofac.Core.Registration.ComponentNotRegisteredException:请求的服务“NServiceBus.Transports.ISendMessages”尚未注册。要避免此异常,请注册组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解析可选依赖项。 2013-10-17 08:57:12,139 [13] FATAL NServiceBus [(null)] - 故障管理器无法处理id为e0fc75b2-4eef-4f90-a450-a25901130c9a的失败消息 System.InvalidOperationException:无法将失败的消息转发到错误队列。 ---> Autofac.Core.Registration.ComponentNotRegisteredException:请求的服务“NServiceBus.Transports.ISendMessages”尚未注册。要避免此异常,请注册组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解析可选依赖项。

这是我的配置:

<configSections>
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
  <UnicastBusConfig ForwardReceivedMessagesTo="audit">
    <MessageEndpointMappings />
  </UnicastBusConfig>

这是我的总线初始化代码:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, AsA_Publisher, UsingTransport<Msmq>
    {

    }

NServiceBus.SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure);
            NServiceBus.Unicast.Config.ConfigUnicastBus busConfig = Configure.With()
                .Log4Net()
                .DefaultBuilder()
                .MsmqSubscriptionStorage()
                .UnicastBus();

            Bus = busConfig.CreateBus().Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());

我不太清楚为什么在失败5次后无法尝试SLR并在此之后将其转发到错误队列。

感谢任何帮助!

由于 普拉萨德

1 个答案:

答案 0 :(得分:-2)

看看这里:https://github.com/sfarmar/Samples/tree/master/HalloWorldWithPubSub

我希望这能引导你朝着正确的方向前进