[为清晰而编辑]
我不确定我是否理解正确。
根据这些指导性的帖子,在 Saga 中,一切都应该简明扼要:
- 乔纳森奥利弗的总结:blog.jonathanoliver.com/...
- Udi Dahan 的原文:skillsmatter.com/skillscasts/...
- 和一些早期的帖子
- lostechies.com/jimmybogard/2013/03/26/scaling-nservicebus-sagas
- docs.particular.net/nservicebus/architecture/principles
也就是说你的saga应该没有业务逻辑,里面也没有if-else指令。它应该只是一个协调器,调用它应该是“面向成功的”——也就是说:在调用 Saga 之前应该尽可能多地进行验证。
但是单独的处理程序(你称它们为“独立处理程序”吗?),那些不在 saga 中的处理程序呢?以下哪项对他们来说是正确的:
一个。saga 之外的 NServiceBus 消息处理程序是否应该总是快速完成,如果有一个耗时的操作将其传递给线程并完成?
湾。还是更好地“占用”处理程序,这样 NServiceBus “知道”该消息正在被大量使用,并可以相应地采取行动 - 即通过自动负载平衡,创建处理过程的另一个实例不同的工艺甚至不同的机器?
正确的方法是什么?
您能否提供一些示例代码以及您的答案,调用一个Foo.DoTimeConsumingBar()
方法。
谢谢你。