使用带有azure队列的通用主机的nservicebus会导致msmq错误

时间:2012-04-24 12:05:10

标签: azure nservicebus servicebus

我有一个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()添加到初始化更正问题。

2 个答案:

答案 0 :(得分:1)

看起来AsA_Server假设msmq,猜测你必须手动配置进程

答案 1 :(得分:1)

将.MessageForwardingInCaseOfFault()添加到init方法解决了该问题。仍然感觉有一个潜在的错误,但它正在发挥作用。

我怀疑下面描述了下一个障碍(没有正确处理错误),但我将不得不尝试强制失败的消息进行验证。

如下所述: NServiceBus error queues in Azure