访问 saga 存储库
Accessing saga repository
我需要从消费者内部访问 saga 存储库,以读取与正在使用的消息相关的 saga 的当前状态。
场景:
我有一个外部服务,当这个服务使用来自传奇的事件时,我想看看传奇是否仍然处于正确的状态,因为如果同时传奇改变了它的状态,消费者必须跳过事件。
如何:我当然可以查询通过使用其本机框架选择的 saga 存储库实现,但我想使用抽象、接口来加载 saga 状态从消费者内部,以便将来能够切换到不同的存储库实现。
感谢任何帮助。
如果 saga 发起命令,将其发送给消费者,为什么消费者需要检查 saga 的状态?从发送命令到消费者能够处理它之间是否有很长的延迟?
您询问的检查类型与系统在处理命令时通常执行的操作不符。如果您确实需要进行此类检查,我实际上建议使用请求客户端进行 request/response 交互,如果命令仍然 有效 ,传奇将响应该请求客户端。这样,saga 存储库的逻辑(和锁定)仍处于 saga 的控制之下。
If needed, a separate endpoint could be used for that request to ensure it isn't backed up behind other messages targeting the saga. If that is desired, post a comment and I'll update the answer.
我需要从消费者内部访问 saga 存储库,以读取与正在使用的消息相关的 saga 的当前状态。
场景: 我有一个外部服务,当这个服务使用来自传奇的事件时,我想看看传奇是否仍然处于正确的状态,因为如果同时传奇改变了它的状态,消费者必须跳过事件。
如何:我当然可以查询通过使用其本机框架选择的 saga 存储库实现,但我想使用抽象、接口来加载 saga 状态从消费者内部,以便将来能够切换到不同的存储库实现。
感谢任何帮助。
如果 saga 发起命令,将其发送给消费者,为什么消费者需要检查 saga 的状态?从发送命令到消费者能够处理它之间是否有很长的延迟?
您询问的检查类型与系统在处理命令时通常执行的操作不符。如果您确实需要进行此类检查,我实际上建议使用请求客户端进行 request/response 交互,如果命令仍然 有效 ,传奇将响应该请求客户端。这样,saga 存储库的逻辑(和锁定)仍处于 saga 的控制之下。
If needed, a separate endpoint could be used for that request to ensure it isn't backed up behind other messages targeting the saga. If that is desired, post a comment and I'll update the answer.