【问题标题】:nservicebus using generic host with azure queues causes msmq errornservicebus 使用带有 azure 队列的通用主机导致 msmq 错误
【发布时间】:2012-04-24 12:05:10
【问题描述】:

我有一个本地服务总线,它被配置为处理来自 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)] - 无法创建队列错误@UseDevelopmentStorage=true 或检查其是否存在 恩斯。处理仍将继续。 System.Messaging.MessageQueueException (0x80004005):消息队列服务不存在 可用。 在 System.Messaging.MessageQueue.Create(字符串路径,布尔事务) 在 NServiceBus.Utils.MsmqUtilities.CreateQueue(字符串 queueName,字符串 accou nt) 在 NServiceBus.Utils.MsmqUtilities.CreateQueueIfNecessary(地址地址,St 环帐户)

编辑:将 .MessageForwardingInCaseOfFault() 添加到初始化中更正了问题。

【问题讨论】:

    标签: azure nservicebus servicebus


    【解决方案1】:

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

    【讨论】:

    • 添加 .MessageForwardingInCaseOfFault() 解决了这个问题。不知道为什么,因为如果我在控制台应用程序中托管(而不是使用 nservicebus.host.exe),则不需要这样做。谢谢
    【解决方案2】:

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

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

    如中所述: NServiceBus error queues in Azure

    【讨论】:

    • 错误处理有两点需要牢记,1. 根据基础设施命名指南正确命名队列,2. 手动创建队列,因为 nsb 只创建它侦听的队列而不是目的地队列
    • 我也会研究一下消息转发要求,不应该是这样的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多