0

我创建了一个简单的 Spring/Vertx 集成示例应用程序并添加了 Hibernate Reactive 来替换现有的 Postgres Reactive Client API。

源代码:https ://github.com/hantsy/vertx-sandbox/blob/master/mutiny-spring-hibernate

运行应用程序时,我尝试访问 http://localhost:8888/posts,它被阻止并且不返回任何内容,在后台控制台中,打印了 sql。

当我运行测试代码时,它抛出了一个异常,PostRepository构造函数 0 SessionFactorybean 没有在 vertx 事件循环上运行。

@Bean
public Mutiny.SessionFactory sessionFactory() {
    return Persistence.createEntityManagerFactory("blogPU")
        .unwrap(Mutiny.SessionFactory.class);
}

更新:,当我将处理程序代码更改为以下内容时。

this.posts.findAll()
.subscribe()
.with(
    data -> {
        LOGGER.log(Level.INFO, "posts data: {0}", data);
        rc.response().endAndAwait(Json.encode(data));
    },
    rc::fail
);

在这里,使用endAndAwait而不是原始end方法,它可以工作。

但是测试方法仍然失败,因为访问端点时返回了一个空列表/posts

当我探索官方指南时:https ://github.com/vertx-howtos/hibernate-reactive-howto ,它SessionFactoryVerticle类中创建了 以确保它们在同一个线程上运行。

4

0 回答 0