Vert.x 中 Verticles 的深入解析
1. Verticles 相关要点概述
在编写和部署 Verticles 时,有几个关键问题需要了解:
- 当事件循环被阻塞时会发生什么?
- 在存在异步初始化工作的情况下,如何延迟生命周期完成的通知?
- 如何部署和取消部署 Verticles?
- 如何传递配置数据?
2. 事件循环与阻塞问题
2.1 事件循环的基本规则
处理程序回调是从事件循环线程运行的。在事件循环上运行的代码应尽可能少占用时间,这样事件循环线程才能处理更多的事件,提高吞吐量。因此,不应在事件循环上执行长时间运行或阻塞的 I/O 操作。
不过,识别阻塞代码并非总是易事,特别是在使用第三方库时。Vert.x 提供了一个检查器,用于检测事件循环是否被阻塞过长时间。
下面是一个事件循环被阻塞的示例代码:
public class BlockEventLoop extends AbstractVerticle {
@Override
public void start() {
vertx.setTimer(1000, id -> {
while (true);
});
}
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
vertx.deployVerticle(new
超级会员免费看
订阅专栏 解锁全文
2221

被折叠的 条评论
为什么被折叠?



