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