当前位置: 首页 > 知识库问答 >
问题:

Azure中的NServiceBus错误队列

卞云瀚
2023-03-14

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

在我的网上。配置文件I具有以下配置:

<MessageForwardingInCaseOfFaultConfig ErrorQueue="myApp-errors"/>

配置NServiceBus时,我调用:

.MessageForwardingInCaseOfFault()

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

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

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

共有2个答案

慕容渊
2023-03-14

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

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

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

所以,如果你不禁用单反使用。DisableSecondLevelRetries()或应用程序。这里描述的配置技术,NServiceBus将把消息转储到重试队列而不是错误队列中。

要使其正常工作,请执行以下操作:

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

轩辕瑞
2023-03-14

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

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

希望这能有所帮助

 类似资料:
  • 我是NServiceBus的新手。我有一个关于错误队列的问题。在我的IHandleMessages类中,抛出了一个异常。但是,消息不会发送到错误队列。日志文件中没有异常信息。即使当我声明一个尝试捕获块时,异常似乎没有被尝试捕获块捕获。有人能帮我澄清NserviceBus中的错误队列和异常处理吗?谢啦

  • 我目前正在使用NServicebus和Azure构建一个应用程序。 常规流程正在运行,但现在我想对应用程序的管理和监视方面做更多的工作。 客户希望看到一个仪表板,在那里他可以看到应用程序的运行状况,也可以纠正问题。 我想做的是: 检测何时将内容发送到错误队列(以便能够向管理员发送警报) 允许管理员处理来自管理应用程序的错误队列消息,而无需求助于提供的命令行工具 在NServicebus中是否有一种

  • 我们目前正在使用nservicebus从azure servicebus队列读取消息。 我可以通过代码创建所需的队列,但有人知道我是否可以设置配置文件,在azure上自动创建错误和输入队列吗?

  • 我的NServiceBus项目将不再读取Azure队列。 我删除了它们,以为可能有一些消息被卡住了,但现在它将不再创建队列。注意:完全相同的代码和凭证用于自动创建队列。相反,我得到的是: 40400:未找到终结点。。 在微软。ServiceBus.消息传递。sbmp。SbmpMessageSender.微软的EndSend命令(IAsyncResult结果)。ServiceBus.消息传递。sbm

  • 我们有一个使用NServicebus的本地Web应用程序,我们希望将队列移动到Azure(作为完全基于云的更大迁移路径的一部分)。我正试图建立一个POC,但似乎无法让它工作。 我有以下配置: 在我的应用程序中,我将总线配置为: 当我尝试发布到队列时,我得到以下消息: 我有点不知所措,我尝试了在网上找到的几种不同的示例,但我觉得我对azure知识的缺乏阻碍了我的发展。我从这个问题中提取了大部分配置:

  • 似乎所有附带nServicebus的示例项目都设置为发送者和宿主是Web角色和辅助角色(并通过角色切入点托管)。 我需要这样做: Web角色发送消息- 是否可以将本地主机配置为仅使用Azure队列存储(而不是MSMQ)? 我似乎在任何地方都找不到一个记录在案的例子。