【问题标题】:NServiceBus message removed from queue w/o a traceNServiceBus 消息从队列中删除,没有跟踪
【发布时间】:2013-10-01 19:26:49
【问题描述】:

我为 azure worker 角色创建了一个新的 NServiceBus。

配置很简单:

NServiceBus.Configure.With(busAssemblies)
                        .Log4Net()
                        .License(Config.Default.NServiceBus_License)
                        .DefineEndpointName(endPointName) 
                        .UnityBuilder(serviceBusDiConfiguration.Container)
                        .AzureConfigurationSource()
                        .AzureSagaPersister()
                        .AzureSubcriptionStorage()
                        .AzureDataBus()
                        .JsonSerializer()
                        .AzureServiceBusMessageQueue()
                        .UnicastBus()
                        .LoadMessageHandlers()
                        .CreateBus()
                        .Start()

客户端配置与上述相同,除了对.DoNotAutoSubscribe() 的添加调用。然后客户端使用Bus.Send(message) 到监听器的输入队列。

Azure 总线队列报告消息被发送到输入队列并被相应地删除(侦听器正在运行 - 而不是其他情况)。所以是的 - 消息正在从队列中删除。但是我的处理程序没有被触发,并且事件查看器或控制台中没有错误消息(使用开发结构时)。

唯一的错误,我什至不认为它是相关的,因为在从队列中删除消息时它没有被记录 - 而是在启动时记录它,但错误如下:

[MonAgentHost] Error: MA EVENT: 2013-05-12T22:52:54.925Z
[MonAgentHost] Error:     2
[MonAgentHost] Error:     12084
[MonAgentHost] Error:     6180
[MonAgentHost] Error:     NetTransport
[MonAgentHost] Error:     0
[MonAgentHost] Error:     880e569e-d37b-4262-bdae-dbe5133
[MonAgentHost] Error:     netutils.cpp
[MonAgentHost] Error:     OpenHttpSession
[MonAgentHost] Error:     749
[MonAgentHost] Error:     0
[MonAgentHost] Error:     2f94
[MonAgentHost] Error:     
[MonAgentHost] Error:     WinHttpGetProxyForUrl(http://127.0.0.1) failed ERROR_WINHTTP_AUTODETECTION_FAILED (12180)

这快把我逼疯了。我不敢相信有人将 API 设计得如此复杂和不透明——相比之下,它让 Windows Complication Foundation 显得微不足道。请帮我弄清楚出了什么问题,任何提示都表示赞赏,例如。在此文件/文件夹中查找错误日志也可以!

谢谢!

【问题讨论】:

  • 您的消息处理程序类型是否在您作为“busAssemblies”传递的程序集中之一?
  • Udi,感谢您的回复。某处有一个例外,但它正在被吞噬。我反编译了二进制文件,能够看到收到和反序列化的消息。它甚至能够选择正确的处理程序,但随后出现了问题。但是,是的,正在加载正确的程序集。我仍在调查它是什么 - 当我有更多信息时会更新线程。有些东西在不应该的时候吞噬了异常 - 调试已编译的代码是一件苦差事。
  • Alwyn,你知道这里出了什么问题吗?
  • 是的,如果您从自定义工作单元内部抛出错误,您的异常将不会被正确记录。相反,它会被严重破坏,以至于您认为它来自您的传输管道。
  • 不知道你为什么需要反编译任何东西,当我遇到这类问题时,我使用 NSB 源代码。

标签: c# azure nservicebus


【解决方案1】:

我最近遇到了同样的问题,当您在本地定义自己的端点名称和主机(而不是在 Azure 辅助角色中)时,AzureServiceBus 传输出现问题,它不起作用。我最近被 Yves 修复了,但我使用了一种解决方法,在 Azure ServiceBus 传输的 app.config 部分中指定了完整的端点名称(包括服务 URL)。

  <configSections>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="AzureServiceBusQueueConfig" type="NServiceBus.Config.AzureServiceBusQueueConfig, NServiceBus.Azure" />
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" />
  </configSections>

 <AzureServiceBusQueueConfig QueueName="myendpoint@mynamespace.servicebus.windows.net" ConnectionString="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=mysecret" />

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2014-06-07
    相关资源
    最近更新 更多