quarkus - Quarkus 反应式 PostgreSQL 请求异常不会触发 onFailure
问题描述
我是 quarkus 和响应式编程的新手。我目前面临 quarkus-reactive-postgresql 扩展的问题。
我有一个包含执行数据库更新的事件的列表。每个事件都必须独立更新(所以我不使用事务)。
这是我的网络服务:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Uni<JsonObject> synchro(List<Event> events) {
List<Uni<RowSet<Row>>> queries = new ArrayList<>();
List<Event> success = new ArrayList<>();
List<Event> fails = new ArrayList<>();
for (Event evt : events) {
// Perform update
var query = client.preparedQuery("My failing query")
.execute(Tuple.of(evt.field));
// Subscribe. It's ok. Add event to success list
query.subscribe().with(unused -> success.add(evt));
// It's failure. Add event to failures
query.onFailure(throwable -> {
log.error(String.format("Unable to update event %s", evt.toString()), throwable);
fails.add(evt);
return true;
});
queries.add(query);
}
return Uni.combine().all().unis(queries)
.combinedWith(ArrayList::new)
.onItem().transform(list -> new JsonObject()
.put("success", success.stream().map(Event::toJson).collect(Collectors.toList()))
.put("errors", fails.stream().map(Event::toJson).collect(Collectors.toList()))
);
}
Quarkus 反应式 pg 扩展引发异常:
2021-08-06 10:35:37,665 ERROR [io.qua.mut.run.MutinyInfrastructure] (vert.x-eventloop-thread-23) Mutiny had to drop the following exception: io.vertx.pgclient.PgException: { "message": "column \"fake_column\" of relation \"table\" does not exist", "severity": "ERROR", "code": "42703", "position": "18", "file": "analyze.c", "line": "2263", "routine": "transformUpdateTargetList" }
但是,.onFailure
不会触发并填写我的失败列表。
是错误还是我的代码出了问题?
谢谢你的帮助,
解决方案
推荐阅读
- powershell - 在正在运行的 powershell 脚本中添加菜单选项
- angularjs - angularjs 将复选框值从整数更改为布尔值
- javascript - Javascript:查找数组中对某个键具有特定值的所有元素
- json - 从函数外部获取 json 访问数据
- angularjs - 有什么方法可以从 Angular js 应用程序(单页应用程序)调用 Angular 7 应用程序
- javascript - cy.wait() 等待 5000 毫秒以等待对路由的第一个请求
- c++ - 重载模板函数
- rabbitmq - 在 rabbitmq 3.8.0 中找不到 prometheus 插件
- php - Opencart 编码语法
- html - 在 html 元素上只允许一次点击事件