【问题标题】:What exceptions in asp.net 5 could/should be considered as "permanent" vs. "non permanent"?asp.net 5 中的哪些例外可以/应该被视为“永久性”与“非永久性”?
【发布时间】:2021-12-30 15:33:51
【问题描述】:

如果更新读取模型中的投影的事件处理程序抛出异常,这是一件坏事。

在这种情况下,我想区分“永久”和“非永久”例外。 对于“永久”异常,我的意思是异常,很可能是由错误代码引起的,如果我尝试重试处理此事件处理程序上的事件,它将一次又一次地抛出。 对于“非永久性”例外,我的意思是“临时”,例如Io/Network/...相关的异常,不是由错误代码引起的,在事件最终成功处理之前重试是有意义的。

虽然我可以提出示例,但我会考虑其中一个(如 InvalidOperation 或 IOException),是否有任何列表或建议应该考虑哪个异常(在这种情况下是在 asp.net 5 堆栈中)?

【问题讨论】:

    标签: .net-5 cqrs event-sourcing


    【解决方案1】:

    一种选择是使用Polly 添加重试或断路器策略,自动重试所有异常(每个读取模型),并在 X 次重试后,禁用失败的特定读取投影或整个读取模型.

    问题是当读取模型无法更新时您希望发生什么。你:

    • 关闭特定投影并允许更新其余部分?
    • 关闭整个读取模型
    • 还是进入“我不同步”模式?

    我认为这完全取决于您如何构建读取模型以及您的业务案例是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 2016-02-20
      • 2012-11-22
      相关资源
      最近更新 更多