C# N服务总线消息已从队列中删除,没有跟踪

C# N服务总线消息已从队列中删除,没有跟踪,c#,azure,nservicebus,C#,Azure,Nservicebus,我为azure worker角色创建了一个新的NServiceBus 配置很简单: NServiceBus.Configure.With(busAssemblies) .Log4Net() .License(Config.Default.NServiceBus_License) .DefineEndpointName(endPointName)

我为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总线队列报告消息被发送到输入队列,并相应地删除(侦听器正在运行,而不是其他)。因此是-消息正在从队列中删除。但是,我的处理程序没有被激发,并且在事件查看器或控制台中都没有错误消息(当使用dev fabric时)

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

这让我快发疯了。我真不敢相信有人实际设计的API是如此复杂和不透明-它使Windows复杂的基础似乎微不足道的比较。请帮我找出哪里出了问题,任何提示都很感谢,例如,查看此文件/文件夹中的错误日志也可以


谢谢

我最近也遇到了同样的问题,当您在本地定义自己的端点名称和主机(不在Azure worker角色中)时,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" />


您的消息处理程序类型是作为“总线程序集”传递的程序集之一吗?Udi,感谢您的响应。某个地方有个例外,但它正在被吞没。我反编译了二进制文件,能够看到接收到的消息并进行了反序列化。它甚至能够选择合适的处理程序,但随后出现了一些问题。但是,是的,正在加载正确的程序集。我仍在调查它是什么-将更新线程时,我有更多的信息。有些东西在不应该的时候吞没了异常-调试编译后的代码是一件麻烦事。Alwyn,你知道这里出了什么问题吗?是的,如果你从自定义工作单元内部抛出错误,你的异常将无法正确记录。相反,它将是如此的混乱,以至于你认为它来自你的传输管道。不确定你为什么需要反编译任何东西,当我遇到这种问题时,我使用NSB源代码。
  <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" />