我有一个本地服务总线,它配置为处理来自 azure 队列的消息。我遇到的问题是主机报告了一个 msmq 错误,说它无法创建错误队列。除了它不应该使用 msmq 之外,尽管出现错误,它也可以毫无问题地处理消息,因此它似乎并不重要。
我的主机作为配置为以 nservicebus.host.exe 进程启动的类库运行。
这是我的主机代码和配置:
internal class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
#region IWantCustomInitialization Members
public void Init()
{
Configure.With()
.DefaultBuilder()
.AzureMessageQueue()
.JsonSerializer()
.UnicastBus()
.IsTransactional(true)
.InMemorySubscriptionStorage();
}
#endregion
}
配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AzureQueueConfig" type="NServiceBus.Config.AzureQueueConfig, NServiceBus.Azure"/>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<AzureQueueConfig QueueName="sender" ConnectionString="UseDevelopmentStorage=true" PeekInterval="5000" MaximumWaitTimeWhenIdle="60000" />
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedruntime version="v4.0" />
<requiredruntime version="v4.0.20506" />
</startup>
</configuration>
这是实际的错误消息:
2012-04-24 07:57:10,973 [1] 错误 NServiceBus.Utils.MsmqUtilities [(null)] <(null)> -无法创建队列错误@UseDevelopmentStorage=true或检查其存在。处理仍将继续。System.Messaging.MessageQueueException (0x80004005):消息队列服务不可用。在 System.Messaging.MessageQueue.Create(String path, Boolean transactional) at NServiceBus.Utils.MsmqUtilities.CreateQueue(String queueName, String account) at NServiceBus.Utils.MsmqUtilities.CreateQueueIfNecessary(Address address, String account)
编辑:在初始化中添加 .MessageForwardingInCaseOfFault() 纠正了这个问题。