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


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 客户端。

更多详情可查看官方博客。


相關推薦

2024-03-29

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

2022-10-06

Eclipse Vert.x 4.3.4 已发布。此版本修复了不少自 4.3.3 以来反馈的 Bug,此外还弃用了一些依赖项,以及引入了其他破坏性变化,详情查看 release note。 当然,该版本最值得关注的变化是添加支持最新 Java 19 早期测试特性 —— 虚拟

2022-12-10

Eclipse Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。 Vert.x 4.3.6 现已发布,此版本主要是修复在 4.3.5 中发现的

2023-10-14

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

2022-11-22

Eclipse Vert.x 4.3.5 已发布,可从 Maven Cen­tral 获取新版本。Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐

2023-03-31

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

2024-02-24

Eclipse Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。 Eclipse Vert.x 版本 4.5.4 现已发布。一些弃用和破坏性变更包

2024-03-16

Eclipse Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。 Eclipse Vert.x 版本 4.5.5 现已发布。一些弃用和破坏性变更包

2022-12-23

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

2024-03-26

Eclipse Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。 Eclipse Vert.x 版本 4.5.6 现已发布,具体更新内容如下: vert

2024-02-01

Eclipse Vert.x 版本 4.4.7 和 4.5.2 现已发布,修复了 CVE-2024-1023。详情可查看 4.4.7 发行说明 及 4.5.2 发行说明。 4.5.2 版本中还包含了一些弃用和破坏性变更,具体包括: Vert.x Core 弃用 AddressResolverOptions 中的 DEFAULT

2023-06-09

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

2023-06-26

Eclipse Vert.x 4.4.4 已发布。 Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。 主要更新内容: 升级到 Netty 4

2023-05-13

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