将NServiceBus Sagas与REST API集成/交互的最明智的方法是什么?
方案如下,
问题是,如果我们使用Sagas的REST API,实际处理将在API场中进行。这在某种程度上违背了实施经销商模式的目的。
另一方面,直接从Sagas使用DomainServives API,允许在工作节点内本地进行处理。使用这种方法,我们必须在多个位置维护API程序集,但吞吐量可能更高。
我想了解最好的方法。就个人而言,我更喜欢使用API(如果可以的话),但这可能会给系统带来麻烦,并且与处理过程相比可能需要更长的时间才能完成。
典型的序列可能类似于发布在线广告,
这一直持续到广告过期,有许多重试和失败条件路径。
答案 0 :(得分:2)
经过多次设计迭代后,我们提出了以下指南,
很高兴听到想法。
答案 1 :(得分:0)
您确定需要Sagas来管理工作流程。我愿意打赌你的域连接到一个公共数据库。如果确实如此,那么直接使用域并删除序列化/网络开销会更快。您还将失去在数据库级别轻松管理事务的能力。
假设您直接呼叫您的域,性能将成为域执行方式的问题。您可以采取措施优化数据库,降低分布式事务成本,分割数据等。您最终可能会使用分发服务器来拥有多个Saga处理节点,但听起来您在设计完成后还需要进行一些测试。选择的。
一般来说,我们使用REST API将命令建模为资源(通过POST),以允许从无法直接访问消息传递的客户端与NSB进行交互。这是从您的Web应用程序获取NSB的潜在解决方案。