【问题标题】:Spring State Machine Asynchronous ProcessesSpring 状态机异步进程
【发布时间】:2020-07-16 18:35:54
【问题描述】:

我正在尝试解决弹簧状态机具有通过 RabbitMQ 调用外部长时间运行进程的操作的问题。步骤如下:

  1. 发出状态机事件

  2. 关联的Action通过RabbitMQ向外部微服务发送消息

  3. 外部微服务需要 1 小时来处理请求并将响应发送回状态机

  4. 状态机获取消息并更新状态。

我遇到的问题是如何在更新状态之前阻止状态机并等待来自该远程服务的响应。我将不胜感激有关此的任何帮助

【问题讨论】:

    标签: spring-rabbit spring-statemachine


    【解决方案1】:

    您不需要显式阻塞状态机。 对于该机器实例,除非下一个事件(在您的情况下,收到来自长时间运行进程的响应),否则机器将保持相同的目标状态(步骤 1 之前)。

    如果要跟踪,你可以有另一个中间状态“WAITINGFORMESSAGE”,并在收到消息时从这个阶段过渡到下一个阶段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2021-07-22
      • 2015-10-31
      相关资源
      最近更新 更多