相关疑难解决方法(0)

Spring webflux和从数据库中读取

Spring 5为webflux引入了rest API的反应式编程风格.我自己也很陌生,并且想知道将数据库的同步调用包装成有意义Flux还是Mono有意义?如果是,这是这样做的方式:

@RestController
public class HomeController {

    private MeasurementRepository repository;

    public HomeController(MeasurementRepository repository){
        this.repository = repository;
    }

    @GetMapping(value = "/v1/measurements")
    public Flux<Measurement> getMeasurements() {
        return Flux.fromIterable(repository.findByFromDateGreaterThanEqual(new Date(1486980000L)));
    }

}
Run Code Online (Sandbox Code Playgroud)

是否有类似异步CrudRepository的东西?我找不到它.

spring reactive-programming

24
推荐指数
4
解决办法
2万
查看次数

ReactiveCrudRepository在春天使用Hibernate

是否可以使用Hibernate和Mysql ReactiveCrudRepository代替CrudRepository?我已经尝试过使用Spring Data Jpa和Hibernate的一些示例,但无法使其工作.我只能ReactiveCrudRepository为MongoDB和cassandra找到一些样本.

spring hibernate spring-data spring-data-jpa reactive

20
推荐指数
2
解决办法
1万
查看次数

Vertx JDBC如何在引擎盖下工作

我一直在使用Vertx 3个月,但现在我想知道非阻塞Vertx JDBC是如何工作的

private void selectEndedMatches(){
        this.jdbcClient.getConnection(conn->{
            if(conn.failed()){
                log.error("Can't get Vertx connection",conn.cause());
            } else{
                final SQLConnection connection = conn.result();
                connection.queryWithParams("select matchid from get5_stats_matches where matchid > ? and end_time is not null",new JsonArray().add(this.lastMatchId),this::endedMatches);
                connection.close();
            }
        });
    }


private void endedMatches(final AsyncResult<ResultSet> rs) {
        if(rs.failed()){
            log.error("Can't make select statement from JdbcVerticle",rs.cause());
        } else{
            final List<JsonArray> results = rs.result().getResults();
            final List<Integer> endedMatches = new ArrayList<>(results.size());
            for (final JsonArray result : results) {
                endedMatches.add(result.getInteger(0));
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

这里我们提供一个回调函数,当我们的select语句从DB返回结果时将执行它,但它是如何工作的.

我在文档中找不到答案 https://vertx.io/docs/vertx-jdbc-client/java/

在我看来:

Vertx使用其中一个工作线程来执行select语句而不阻塞事件循环线程.但在这种情况下,每个sql查询都需要一个单独的线程来执行.但是如果Vertx没有使用任何单独的线程来执行查询,在这种情况下,事件循环如何知道结果来自DB,使用线程非常简单,事件循环可以检查jdbc查询使用的线程的当前状态,以及如果状态已准备就绪,则意味着Event循环应该执行回调

我对么?

java asynchronous jdbc vert.x

2
推荐指数
1
解决办法
1323
查看次数