nservicebus - 如何防止 NServiceBus 不发送错误消息
问题描述
我是 NServiceBus 的新手,所以也许我在这里问了一些非常愚蠢的问题,但是有没有办法让 NServiceBus 不停止发送响应处理程序失败的消息而发送的任何消息?
让我用一个简单的例子来解释。
假设我有一个OrderPaidEvent
具有执行以下操作的处理程序:
- 寻找客户
- 启动数据库事务
- 将客户更新为好客户
- 发送
CustomerUpgradedToGoodCustomerEvent
消息 - 提交数据库事务
相当简单,世界上一切都很好。现在几个月后,其他人认为支付订单时发送电子邮件会很好,因此添加了另一个处理程序来OrderPaidEvent
发送电子邮件。
不幸的是,现在每当邮件服务器出现问题时,第二个处理程序都会失败并出现错误,但会阻止CustomerUpgradedToGoodCustomerEvent
发送原始消息(步骤 4)。但是因为 DB 事务已经提交(第 5 步),所以客户已经升级为数据库中的好客户。
这意味着即使OrderPaidEvent
重试处理程序,客户也不会再更改,因此CustomerUpgradedToGoodCustomerEvent
永远不会发送消息。更糟糕的是,这完全是因为对代码的更改与原始消息处理程序无关,因此很难检测到。
这似乎是一个巨大的缺陷,因为我是新手,所以我确定我做错了什么,但我似乎无法弄清楚它是什么。
你们这些好人的任何帮助都会很棒。
提前致谢。
解决方案
推荐阅读
- android - How to have similar mechanism of center-crop on ExoPlayer's PlayerView , but not on the center?
- c++ - 如何使用 C++ 以编程方式读取地理数据
- java - 带有 slif4j 日志的 try catch 块的模拟测试问题
- java - 如何使用 jdt 重命名字段
- vue.js - Vuex 向组件返回一些数据
- ionic-framework - Ionic 4 - AlertController:属性“当前”不存在 - Angular?
- javascript - 如何检测 MDC Snackbar 是否在 JS 中关闭?
- asp.net-core - 在 Azure 中托管时,AspNet Core 日志记录工作但不在 ServiceStack 服务中
- python - Python virtualenv Windows
- python - 用于获取 Outlook 笔记的 rest api