Azure中的NServiceBus错误队列

时间:2012-04-06 14:12:04

标签: azure nservicebus nservicebus3

我正在尝试在Azure中设置NServiceBus。在本地开发期间,我使用存储队列,当部署在云中时,我使用的是Azure Service Bus。出于某种原因,当发生错误时,消息不会移动到错误队列中。实际上,甚至都没有创建错误队列。

在我的Web.config文件中,我有以下配置:

<MessageForwardingInCaseOfFaultConfig ErrorQueue="myApp-errors"/>

配置NServiceBus时,我打电话:

.MessageForwardingInCaseOfFault()

当邮件失败时,日志中的最后一个错误始终为

Failed raising 'transport message received' event for message with ID=170ad256-b559-417e-8b34-3882045cc19e

对此有何想法?消息传递似乎有效,只是错误处理不起作用。

2 个答案:

答案 0 :(得分:3)

我的第一个猜测是,不能创建错误队列,因为不允许名称中的captials

如果这不起作用,我们将不得不进行更彻底的分析,但这需要日志中的更多信息。

希望这有帮助

答案 1 :(得分:0)

我在NServiceBus 3.3上遇到了同样的问题。

这就是为我解决问题的原因。如果Azure队列未标记为事务性,那么NServiceBus甚至不会将消息发送到错误队列 - 它只会消失在以太中。

此外,二级重试不适用于Azure队列 - 您会收到一条警告,说明队列需要与该进程位于同一台计算机上。

因此,如果您不使用.DisableSecondLevelRetries()或此处描述的app.config技术禁用SLR,NServiceBus会将消息转储到重试队列而不是错误队列。

要实现这个目标:

禁用二级重试 确保Azure队列配置为事务性(即使它们不在Azure中)