我有一个on premisesise服务总线,配置为处理来自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] ERROR NServiceBus.Utils.MsmqUtilities [(null)]&lt;(nul 1)GT; - 无法创建队列错误@ UseDevelopmentStorage = true 或检查其存在 ENCE。处理仍将继续。 System.Messaging.MessageQueueException(0x80004005):Message Queue服务为no 可用。 在System.Messaging.MessageQueue.Create(String path,Boolean transactional) 在NServiceBus.Utils.MsmqUtilities.CreateQueue(String queueName,String accou) NT) 在NServiceBus.Utils.MsmqUtilities.CreateQueueIfNecessary(地址,St 戒指帐户)
编辑:将.MessageForwardingInCaseOfFault()添加到初始化更正问题。
答案 0 :(得分:1)
看起来AsA_Server假设msmq,猜测你必须手动配置进程
答案 1 :(得分:1)
将.MessageForwardingInCaseOfFault()添加到init方法解决了该问题。仍然感觉有一个潜在的错误,但它正在发挥作用。
我怀疑下面描述了下一个障碍(没有正确处理错误),但我将不得不尝试强制失败的消息进行验证。