1

我正在尝试在 Azure 中设置 NServiceBus。在本地开发期间,我使用存储队列,而在云中部署时,我使用 Azure 服务总线。由于某种原因,当发生错误时,消息不会移动到错误队列中。事实上,甚至没有创建错误队列。

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

<MessageForwardingInCaseOfFaultConfig ErrorQueue="myApp-errors"/>

配置 NServiceBus 时,我调用:

.MessageForwardingInCaseOfFault()

当消息失败时,日志中的最后一个错误总是

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

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

4

2 回答 2

3

我的第一个猜测是无法创建错误队列,因为名称中不允许使用大写字母

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

希望这可以帮助

于 2012-04-07T10:47:01.263 回答
0

我在使用 NServiceBus 3.3 时遇到了同样的问题。

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

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

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

要使其正常工作:

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

于 2013-02-25T16:34:37.500 回答