您现在的位置是:首页 > 文章详情

Eclipse Vert.x 4.5.0 发布,虚拟线程支持

日期:2023-11-17点击:122

Eclipse Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。

Eclipse Vert.x 4.5.0 现已发布,此版本带来了一些新功能,包括虚拟线程支持。亮点更新如下:

虚拟线程

虚拟线程 verticle 可以等待 Vert.x futures 并同步获取结果。

 Verticle verticle = new AbstractVerticle() { @Override public void start() { HttpClient client = vertx.createHttpClient(); HttpClientRequest req = Future.await(client.request( HttpMethod.GET, 8080, "localhost", "/")); HttpClientResponse resp = Future.await(req.send()); int status = resp.statusCode(); Buffer body = Future.await(resp.body()); } }; // Run the verticle a on virtual thread vertx.deployVerticle(verticle, new DeploymentOptions().setThreadingModel(ThreadingModel.VIRTUAL_THREAD));

Vert.x 虚拟线程可以使用await来 block 任何 Vert.x future :

 // create a test table await(pool.query("create table test(id int primary key, name varchar(255))").execute()); // insert some test data await(pool.query("insert into test values (1, 'Hello'), (2, 'World')").execute()); // query some data RowSet<Row> rows = await(pool.query("select * from test").execute()); for (Row row : rows) { System.out.println("row = " + row.toJson()); } 

可以在 ex­am­ple repo 查看更多信息。

动态 SQL 连接创建

默认情况下,连接池始终连接到同一主机,换句话说,数据库配置是静态有时数据库配置需要是动态的,例如连接到数据库阵列,或者数据库配置可能会改变。

通过动态连接配置,你可以在 Vert.x 中轻松实现这一点:

 Pool pool = PgBuilder.pool() .with(poolOptions) .connectingTo(() -> { Future<SqlConnectOptions> connectOptions = retrieveOptions(); return connectOptions; }) .using(vertx) .build(); 

每次 pool 需要创建连接时,都会调用 options supplier 并使用返回的选项来创建连接。

PG bouncer transaction pooling mode

7 级代理可以在与实际数据库的多个连接上平衡查询负载。当发生这种情况时,客户端可能会因缺乏 session affinity 而感到 confused,并且可能会出现不必要的错误,例如 ERROR: unnamed preded statements does not exit (26000)。

Vert.x SQL 客户端现在支持 7 级代理,例如 PgBouncer 

TCP SSL 选项更新

现在可以在运行时更新 TCP client/server SSL 选项 ,这对于证书轮换非常有用。

 Future<Boolean> fut = server.updateSSLOptions( new SSLOptions() .setKeyCertOptions(new JksOptions() .setPath("/path/to/your/server-keystore.jks") .setPassword("password-of-your-keystore"))); 

新连接将使用更新的配置。

WebSocket client

在新的 WebSocket client 中从 Vert.x HTTP client 捕获了 WebSocket client API 。

 WebSocketClient wsClient = vertx.createWebSocketClient(); Future<WebSocket> f = wsClient.connect(connectOptions); 

这一改动的目的是让HttpClient接口专注于 HTTP 交互,并清理接口。

Client builders

在 4.5 中开始引入用于高级客户端创建的 builder pattern。

当 Vert.x 客户端需要进行超出选项的配置时,builder pattern 有助于配置和创建 Vert.x 客户端。

更多详情可查看官方博客

原文链接:https://www.oschina.net/news/266908/eclipse-vert-x-4-5-0-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章