路由失败处理程序在 SmallRye Mutiny Vertx 绑定中被阻止

route failureHandler is blocked in SmallRye Mutiny Vertx bindings

我尝试体验 SmallRye Mutiny Vertx 绑定,complete example codes 可以在我的 Github 上找到。

这样组装路由的时候

router.get("/posts/:id").produces("application/json")
            .handler(handlers::get);
            //.failureHandler(frc -> frc.response().setStatusCode(404).end());

failureHandler 将阻止请求。

这里的问题是结束 returns 一个 Uni 对象。你可以把它想象成一个函数。这个函数是惰性的。您要做的是 调用 该函数。这可以通过订阅它来实现。

如果您对处理此 Uni 的结果不感兴趣,您可以使用 endAndForget 而不是 end,后者将为您调用该函数(订阅 Uni).

如果您想对 Uni 的结果做些什么,您可以改为订阅:

.failureHandler(frc ->
  frc.response()
    .setStatusCode(404)
    .end()
    .subscribe().with(ignore -> System.out.println("failure handler is done"))
);