当从处理程序调用的代码中发生异常时,主机会尝试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并在此之后将其转发到错误队列。
感谢任何帮助!
由于 普拉萨德
答案 0 :(得分:-2)
看看这里:https://github.com/sfarmar/Samples/tree/master/HalloWorldWithPubSub
我希望这能引导你朝着正确的方向前进