首页 > 解决方案 > Rebus saga 在多个处理程序之间拆分

问题描述

可以将 Rebus saga 拆分为多个处理程序类吗?

我有一个 Rebus saga 工作流,它由许多消息类型启动,并且仅由两种消息类型完成。

而不是让单个类实现所有各种IAmInitiatedBy<T>IHandleMessage<T>我想将它们分成一个类,每条消息启动工作流。还有一个类处理完成工作流的消息。

因此,如果有任何新的需求也可以启动工作流,我只需创建一个新的处理程序而不是更新现有的处理程序。

这是 Rebus Sagas 的有效用例吗?在多个类中拆分处理程序,这些类都使用相同的 SagaData 类型。

对此的初步测试似乎有效,但我们现有的工作流单元测试使用的是 SagaFixture,我无法跨多个夹具一起工作。

标签: rebussaga

解决方案


它应该可以正常工作,但正如您正确发现的那样,SagaFixture它并不是真正适合提供多种 saga 处理程序类型。

如果您有兴趣提供帮助,我建议您去 fork Rebus.TestHelpers存储库。我很乐意帮助您提交 PR。


推荐阅读