我是NServiceBus的新手,所以也许我在这里问一些非常愚蠢的东西,但是有没有办法让NServiceBus不停止发送任何响应处理程序失败的消息而发送的消息?
让我用一个简单的例子来解释。
假设我有一个OrderPaidEvent
,它有一个执行以下操作的处理程序:
CustomerUpgradedToGoodCustomerEvent
消息相当简单,一切都在世界上很好。现在几个月后,其他人认为,当支付订单时,电子邮件会很好,因此会向OrderPaidEvent
添加另一个处理程序以发送电子邮件。
不幸的是,现在每当邮件服务器出现问题时,第二个处理程序将失败并出现错误,但是会阻止发送原始的CustomerUpgradedToGoodCustomerEvent
消息(步骤4)。但由于数据库事务已经提交(步骤5),因此客户已经升级为数据库中的优秀客户。
这意味着即使重试OrderPaidEvent
处理程序,客户也不再更改,因此永远不会发送CustomerUpgradedToGoodCustomerEvent
消息。更糟糕的是,这都是因为代码的更改与原始消息处理程序无关,因此很难检测到。
这似乎是一个巨大的缺陷,因为我是新手,我确信我做错了,但我似乎无法弄清楚它是什么。
你们这些好人的帮助会很棒。
提前致谢。