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()); }
可以在 example 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 客户端。
更多详情可查看官方博客。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Bun v1.0.12 版本发布:功能升级与错误修复
Bun技术团队近期推出了其JavaScript运行时、包管理器、打包器和测试运行器的升级版本——Bun v1.0.12。该版本在修复了24个安全漏洞的基础上,引入了多项创新功能和重大改进,以增强用户体验并提高与Node.js的兼容性。 Bun v1.0.12的一个显著新特性是bun -e命令的加入,允许开发者在不创建文件的情况下直接运行脚本。这极大提升了编写和测试小型脚本的便利性和灵活性。此外,此版本通过bun --env-file命令的引入,使得用户可以指定不同的环境变量文件,这对于多环境测试尤为重要。 新版Bun还增加了对server.url的支持,它允许返回定义HTTP服务器位置的URL对象,这对于需要在测试中获取服务器实际URL的用户非常有用。同时,import.meta.env的引入使得在Bun环境中访问环境变量变得更为简便。 在代码健壮性方面,Bun v1.0.12引入了expect.unreachable(),它用于在代码路径不应被执行时抛出错误。同时,该版本对Bun的CLI帮助进行了改进,使其更易于阅读和理解。 在打包功能方面,Bun v1.0.12引入了一项重要改进:...
- 下一篇
Apache Hadoop YARN Secure Containers 权限提升漏洞
漏洞描述 Apache Hadoop是美国阿帕奇(Apache)基金会的一套开源的分布式系统基础架构。YARN Secure Containers功能用于在隔离的 linux 容器中执行用户提交的应用程序,container-executor是用来启动与管理Container的工具。 Apache Hadoop 在 3.3.1-3.3.4 版本中,由于container-executor命令被设置成suid位并以root身份执行,动态链接库加载路径变为:"$ORIGIN/:…/lib/native/"。如果经过身份认证的攻击者可以向 yarn 集群提交在宿主机上运行的任务,并在"$ORIGIN/:../lib/native/"中增加同名libcrypto.so,从而利用此漏洞加载恶意 so 文件并提升到 root 权限。 漏洞名称 Apache Hadoop YARN Secure Containers 权限提升漏洞 漏洞类型 输入验证不恰当 发现时间 2023-11-16 漏洞影响广度 小 MPS编号 MPS-2023-4973 CVE编号 CVE-2023-26031 CNVD编号...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19