首页 > 解决方案 > 在最大中止失败后未触发移动到 Rebus 错误队列

问题描述

根据错误处理wiki,默认的 Rebus 配置应该将有害消息移动到错误队列中。在第三方组件导致 stackoverflow 异常的情况下不会发生这种情况。底层队列是 msmq,因此有害消息中止计数器递增。

这种行为是因为应用程序异常/退出导致 Rebus 失去跟踪吗?要么对失败的消息使用内存计数,要么在考虑消息之前退出。

标签: msmqrebuspoison-queue

解决方案


抱歉,Rebus 在这种情况下不跟踪错误的原因是因为它通常无法StackOverflowException在 C#中捕获(*)

你在这里不走运,对不起。告诉制作第 3 方组件的人修复他们的递归。


(*) 仅当 CLR 运行时将某些特定标志设置为 true 并且StackOverflowException“手动”抛出该标志时才有可能。如果由于实际堆栈溢出而导致异常来自运行时,则无法捕获。


推荐阅读