Quarkus反应式客户端MySql客户端未插入记录

时间:2019-12-22 09:19:46

标签: mysql vert.x quarkus

我正在使用Quarkus 1.1.0.Final为Quarks-Mysql反应式客户端进行POC。代码如下所示:

public void put() {

        mysqlPool
            .begin(ar ->{
                if(ar.succeeded()) {
                    Transaction tx = ar.result();
                    tx.preparedQuery(
                        "insert into Book(categoryType, description, isbn, name, price, totalBuyers) values(?, ?, ?, ?, ?, ?)",
                        Tuple.of(1, "Fresh one", "ISBN-0", "Fresh", 100.0, 0),
                        qr -> {
                            if(qr.succeeded()) {
                                tx.commit(txr -> {
                                    if(txr.succeeded()) {
                                        System.out.println("Successful !!!");//Is not printing
                                    } else {
                                        System.err.println("Failed !!!");//Is not printing
                                    }
                                });
                            }
                            tx.close();
                        });
                }
            }); 
    }

在调用tx.commit之后,没有异步结果返回(成功或失败),并且没有新记录插入到数据库中。启发每次呼叫后自动ID都会增加。我正在使用this进行检查。

我的application.properties是:

quarkus.datasource.url = vertx-reactive:mysql://localhost:3306/ebs_book
quarkus.datasource.username = xxx
quarkus.datasource.password = xxx

我正在使用带有最新标签的mysql官方图片。

我在这里想念什么吗? 同样,如果任何人都可以提供和具有reactx扩展的相等代码会更好。我不喜欢复合回调!

1 个答案:

答案 0 :(得分:1)

您不应在tx.close()之后调用commit(),因为它将安排ROLLBACK查询,有关如何使用事务API的信息,请查看official documentation。 / p>

关于reactX扩展代码,您可以转到page,它在PostgreSQL客户端文档中,但是我认为MySQL客户端的API是相同的,并且我认为可以对其进行改进以包含在MySQL文档中

此外,我无法重现您遇到的问题,如果问题仍然存在,能否请您提供一个重现者并在https://github.com/eclipse-vertx/vertx-sql-client/issues中打开一个问题?