1

当从处理程序调用的代码中发生异常时,主机会尝试 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,并且在那之后也将其转发到错误队列。

任何帮助表示赞赏!

谢谢普拉萨德

4

1 回答 1

-2

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

我希望这可以指导您朝着正确的方向前进

于 2013-10-19T14:11:02.480 回答