我正在使用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扩展的相等代码会更好。我不喜欢复合回调!
答案 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中打开一个问题?