访问 saga 存储库

时间:2021-04-09 16:30:52

标签: masstransit saga

我需要从消费者内部访问 saga 存储库,以读取与正在使用的消息相关的 saga 的当前状态。

场景: 我有一个外部服务,当这个服务使用来自 saga 的事件时,我想看看 saga 是否仍然处于正确的状态,因为如果同时 saga 改变了它的状态,消费者必须跳过该事件。

如何:我一定能查询通过使用其本地框架选择的传奇库实现,但我想用一个抽象,一个接口,从消费者中加载传奇状态,以便将来能够切换到不同的存储库实现。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果 saga 发起命令,将其发送给消费者,为什么消费者需要检查 saga 的状态?从发送命令到消费者能够处理它之间是否有很长的延迟?

您询问的检查类型与系统在处理命令时通常会做的事情背道而驰。如果您确实需要进行这种类型的检查,我实际上建议使用请求客户端进行请求/响应交互,如果命令仍然有效,saga 将响应该请求客户端。这样,saga 存储库的逻辑(和锁定)仍然在 saga 的控制之下。

<块引用>

如果需要,可以为该请求使用一个单独的端点,以确保它不会被备份到针对 saga 的其他消息之后。如果需要,请发表评论,我会更新答案。

相关问题