如何解决访问 saga 存储库
我需要从消费者内部访问 saga 存储库,以读取与正在使用的消息相关的 saga 的当前状态。
场景: 我有一个外部服务,当这个服务使用来自 saga 的事件时,我想看看 saga 是否仍然处于正确的状态,因为如果同时 saga 改变了它的状态,消费者必须跳过该事件。
如何:我一定能查询通过使用其本地框架选择的传奇库实现,但我想用一个抽象,一个接口,从消费者中加载传奇状态,以便将来能够切换到不同的存储库实现。
感谢任何帮助。
解决方法
如果 saga 发起命令,将其发送给消费者,为什么消费者需要检查 saga 的状态?从发送命令到消费者能够处理它之间是否有很长的延迟?
您询问的检查类型与系统在处理命令时通常会做的事情背道而驰。如果您确实需要进行这种类型的检查,我实际上建议使用请求客户端进行请求/响应交互,如果命令仍然有效,saga 将响应该请求客户端。这样,saga 存储库的逻辑(和锁定)仍然在 saga 的控制之下。
如果需要,可以为该请求使用一个单独的端点,以确保它不会被备份到针对 saga 的其他消息之后。如果需要,请发表评论,我会更新答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。