spring-state-machine持久化restore踩坑

简介: spring-state-machine持久化restore踩坑

今天遇到的问题是在响应式编程中发生禁止block异常:

org.springframework.statemachine.persist.AbstractStateMachinePersister#restore

源码如下:

@Override
public final StateMachine<S, E> restore(StateMachine<S, E> stateMachine, T contextObj) throws Exception {
  final StateMachineContext<S, E> context = stateMachinePersist.read(contextObj);
  stateMachine.stopReactively().block();
  stateMachine.getStateMachineAccessor().doWithAllRegions(function -> function.resetStateMachineReactively(context).block());
  stateMachine.startReactively().block();
  return stateMachine;
}

自己重新编写该功能

public Mono<StateMachine<StateEnum, WordChain>> restore(StateMachine<WordChainStateEnuminEventEnum> stateMaring contextObj) {
    return stateMachine.stopReactively().then(Mono.fromSupplier((SerSupp<StateMachineContext<WordChainStateEnum, WordChainEventEn                    ateMachineRuntimePersister.read(contextObj))).flatMapMany(context ->
                    Flux.fromIterable(stateMachine.getStateMachineAccessor().withAllRegions())
                            .flatMap(function -> function.resetStateMachineReactively(context)))
            .then(stateMachine.startReactively()).thenReturn(stateMachine);
}
相关文章
|
6月前
|
NoSQL Redis
spring-state-machine使用redis持久化
spring-state-machine使用redis持久化
156 0
|
6月前
spring-state-machine持久化
spring-state-machine持久化
108 0
|
负载均衡 Java 关系型数据库
|
XML 存储 JSON
Spring Cloud Alibaba Sentinel 整合 nacos 进行规则持久化
Spring Cloud Alibaba Sentinel 整合 nacos 进行规则持久化
2623 0
Spring Cloud Alibaba Sentinel 整合 nacos 进行规则持久化
|
存储 NoSQL Java
|
SQL 存储 druid
Spring Boot数据持久化之JdbcTemplate
Spring Boot数据持久化之JdbcTemplate
|
SQL Java 数据库连接
Java Web Spring核心之AOP的解析及实战(AOP的实现、切入点、Aspect Spring的持久化 Hibernate)
Java Web Spring核心之AOP的解析及实战(AOP的实现、切入点、Aspect Spring的持久化 Hibernate)
202 0
Java Web Spring核心之AOP的解析及实战(AOP的实现、切入点、Aspect Spring的持久化 Hibernate)
|
存储 算法 关系型数据库
手把手教你Spring Cloud Alibaba系列教程:Nacos数据持久化
手把手教你Spring Cloud Alibaba系列教程:Nacos数据持久化
186 0
|
存储 SQL 编解码
Spring Security系列教程16--基于持久化令牌方案实现自动登录
前言 在上一章节中,一一哥 带各位基于散列加密方案实现了自动登录,并且给各位介绍了散列加密算法,其实还有另一种自动登录的实现方案,也就是基于持久化令牌方案来进行实现。接下来请跟 一一哥 学习这种方案该怎么实现吧。 一. 持久化令牌方案简介 1. 持久化令牌方案 有的小伙伴会问,既然我们要基于持久化令牌来实现自动登录,那啥是持久化令牌啊?所以 一一哥 先给大家做个概念解释。 所谓的持久化令牌的实现方案,其实在交互上与我们前面章节讲的散列加密方案一致,只不过是在用户勾选Remember-me之后,将生成的token令牌发送到用户浏览器,并在用户下次访问系统时读取该令牌进行认证。不同的是,持久化令
512 0
|
SQL 安全 Java
肝!Spring JDBC持久化层框架“全家桶”教程!
肝!Spring JDBC持久化层框架“全家桶”教程!
211 0
肝!Spring JDBC持久化层框架“全家桶”教程!