【问题标题】:Accessing saga repository访问 saga 存储库
【发布时间】:2021-04-09 16:30:52
【问题描述】:

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

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

如何:我当然可以通过使用其本机框架查询选择的 saga 存储库实现,但我想使用抽象,一个接口,从消费者内部加载 saga 状态,为了能够在将来切换到不同的存储库实现。

感谢任何帮助。

【问题讨论】:

    标签: masstransit saga


    【解决方案1】:

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

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

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

    【讨论】:

    • 我真的需要检查,在我的场景中,saga 维护一个非常长且耗时的分布式事务,其中必须同时处理任务以加快进程。任务在开始时安排,如果单个活动失败,则必须跳过剩余的待处理命令。
    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2015-01-18
    • 2015-01-18
    相关资源
    最近更新 更多