Java Reactor和Cassandra-在没有数据库影响的情况下执行更新

时间:2018-10-12 13:30:44

标签: cassandra reactive-programming reactive

我开始探索反应世界。在我的微服务项目中,我正在使用Project Reactor和反应式Cassandra存储库。

我写了一个简单的DELETE处理程序方法:我通过id检索用户,检查它是否是DELETED(按状态过滤)和:

  • 如果它被标记为DELETED,则返回notFound()(无法删除标记为DELETED的用户)
  • 否则:将其标记为DELETED并更新实体

问题在于更新不是数据库更改(即使已执行存储库中的方法)。是什么原因导致这种奇怪的行为?

这是我的代码:

@Override
public Mono<ServerResponse> handle(ServerRequest serverRequest) {
    String userId = serverRequest.pathVariable(PATH_PARAM_ID);
    return Mono.just(userId)
            .map(casandraRepository::findById)
            .flatMap(detailsMono -> detailsMono.filter(details -> !details.getDeleted()))
            .map(this::getResponsePayload)
            .defaultIfEmpty(notFound().build())
            .flatMap(serverResponseMono -> serverResponseMono);
}

private Mono<ServerResponse> getResponsePayload(User details){
    User markedDetails = details.toBuilder().deleted(Boolean.TRUE).build();
    casandraRepository.save(markedDetails);
    return noContent().build();
}

0 个答案:

没有答案