1

我有一个本地服务总线,它配置为处理来自 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() 纠正了这个问题。

4

2 回答 2

1

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

于 2012-04-24T18:09:19.357 回答
1

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

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

如中所述: Azure 中的 NServiceBus 错误队列

于 2012-04-24T21:50:37.390 回答