在提供动态内容时使用vert.x web的正确方法是什么?

时间:2016-06-16 08:47:51

标签: vert.x

如果我创建一个对Couchbase进行一些读写调用的路由,那么在vert.x web中实现它的正确方法是什么?通过使用handler()方法或blockingHandler()方法?

router.post("/some/path/").handler(routingContext -> {
  // a few read write calls to Couchbase here.
});

也是同样的问题,但是在从Handlebars或Pebble等模板生成Web内容的背景下。使用handler()或blockingHandler()?

1 个答案:

答案 0 :(得分:0)

这完全取决于您在处理程序中编写的代码类型。从第二个问题开始,所有模板引擎处理程序都实现了异步API(尽管加载模板本身是阻塞的,但由于缓存只执行一次)。在这种情况下,您应该使用:

router.post("/some/path/").handler(HandlebarsTemplateEngine.create());

回到第一个问题,如果你的couchbase客户端API阻塞,意味着它没有响应,它会阻止,直到你从服务器得到响应,那么在这种情况下你必须使用blockingHandler或者你阻止事件循环,并通过扩展程序阻止整个应用程序。

但是,如果您使用的是couchbase异步API,则应使用handler变体。有关如何使用异步API的示例,请参阅此博客post