1.3. 新功能、增强功能和技术变化


本节概述了红帽构建的 Quarkus 2.13 中引入的新功能、增强功能和技术变化。

1.3.1. 云

Red Hat build of Quarkus 2.13 版本引入了对 Reactive SQL 客户端的 Kubernetes 服务绑定支持。

为服务绑定添加以下扩展,并被工作负载投射支持:

  • quarkus-reactive-mssql-client
  • quarkus-reactive-mysql-client
  • quarkus-reactive-pg-client

如需更多信息,请参阅 Service Binding 指南。

Red Hat build of Quarkus 2.13 将 SQL Server 的 Microsoft JDBC 驱动程序从 mssql-jdbc-7.2.2.jre8.jar 更新至 mssql-jdbc-11.2.0.jre11.jar

1.3.2. Core

1.3.2.1. Apache Kafka UI

Red Hat build of Quarkus 2.13 为 Dev UI 引进了 Kafka UI

如果您将 Quarkus 应用程序配置为使用 quarkus-kafka-client 扩展并在开发模式下运行,则 Kafka UI 会自动连接到 Kafka 实例。

使用 Kafka UI,您可以执行以下任务:

  • 管理 Kafka 集群
  • 列出并创建主题
  • 视觉化记录
  • 发布新记录
  • 检查消费者组及其消耗 lags

1.3.2.2. Java 支持更改

1.3.2.2.1. 增加了对 Java 17 的支持

Red Hat build of Quarkus 2.13 通过以下方法增加对 Java 17 的支持:

  • Java 17 支持原生和 JVM 模式

现在,对于 JVM 和原生模式,红帽构建的 Quarkus 2.13 支持 Java 17。您可以使用带有 Quarkus 的 Java 17 为生产环境构建原生可执行文件。在此次更新之前,支持使用 Java 17 构建原生可执行文件作为红帽技术预览。

  • 使用 Java 17 构建原生可执行文件

如果您要使用 Mandrel 构建原生可执行文件,则使用 Java 17。在生成原生可执行文件时,quarkus 默认为 Java 17 构建器镜像,无论您的应用程序是使用 Java 11 创建的。

重要

在 JVM 模式中使用时,红帽将继续在 Quarkus 中支持 Java 11。

  • Quarkus code.quarkus.redhat.com 默认为 Java 17

在 Red Hat build of Quarkus 2.13 中,code.quarkus.redhat.com 项目生成器默认为 Java 17。要使用 Java 11 创建 Quarkus 项目,请在 Quickstart 配置选项的 CONFIGURE YOUR APPLICATION 部分中设置 Java 版本。

有关支持的 Java 和 OpenJDK 版本的更多信息,登录到红帽客户门户网站并查看 支持的配置 知识库解决方案。

1.3.2.3. Eclipse Vert.x 和 Netty 已升级

在 Red Hat build of Quarkus 2.13 中,Eclipse Vert.x 和 Netty 被升级到以下版本:

在 Red Hat build of Quarkus 2.13 中,引入了新的插件 quarkus-extension-maven-plugin,并替换了 quarkus-bootstrap-maven-plugin,它在 Quarkus 2.13 中弃用。

更新 Quarkus 扩展项目以使用新插件,方法是更新项目的 pom.xml 文件,并将 artifactId 属性的值从 quarkus-bootstrap-maven-plugin 改为 quarkus-extension-maven-plugin

在 Red Hat build of Quarkus 2.13 中,带有 RESTEasy Reactive 的 quarkus-resteasy-reactive-jaxb 扩展,您可以通过 JaxbContextCustomizer CDI Bean 自定义 XML Binding (JAXB)上下文的 Java 架构。

有关更多信息,请参阅 Quarkus "Writing REST Services with RESTEasy Reactive" 指南中的 Customize the JAXB 配置部分

1.3.2.6. 较小的配置 secret 密钥支持

当配置属性包含密码或其他机密时,SmallRye Config 可以保护它们以防止意外暴露这些值,例如,通过将它们输出到日志中。

在这个版本中,您可以将密钥标记为 secret。然后,应用程序代码只能在将 read 嵌套在 SecretKeys.doUnlocked 调用中后读取 protected 属性的值。

注意

红帽构建的 Quarkus 计划在以后的版本中扩展对 secret 的支持,比如在此功能中添加加密或哈希功能。

1.3.2.7. 支持 Quiltflower decompiler

当您开发 Quarkus 扩展时,Quarkus 会生成几个类,在很多情况下,在构建阶段转换现有的类。

在 Red Hat build of Quarkus 2.13 中,您可以使用 Quiltflower decompiler 来调试并检查这些类的源代码。这样,您可以更好地了解代码,提高其质量、速度和可用性。

在此次更新之前,使用了 Fernflower decompiler。但是,当切换到 Quiltflower 时,Fernflower decompiler 在 Quarkus 2.13 中已弃用。

要下载并运行 Quiltflower decompiler,请更新 application.properties 文件,将 quarkus.package.quiltflower.enabled 属性设置为 true

有关 Quiltflower decompiler 的更多信息,请参阅 Quarkus 编写您自己的扩展 指南。

1.3.3. data

在 Red Hat build of Quarkus 2.13 中,您可以通过注册 ValidatorFactory Customizer beans 来完全配置 ValidatorFactory。

在此次更新之前,您只能通过声明替换 Bean 来配置 ValidatorFactory。因此,一些高级配置(如覆盖内置约束验证器)无法实现。

如需更多信息,请参阅 Quarkus "Validation with Hibernate Validator" 指南中的 配置 ValidatorFactory 部分。

1.3.3.2. Elasticsearch 的 dev Services

Red Hat build of Quarkus 2.13 引入了 Elasticsearch 的 Dev Services,这意味着您在开发和测试 Quarkus 应用程序时不再需要设置和配置本地 Elasticsearch 服务。

如果您使用使用 Elasticsearch 服务的 Quarkus 扩展,当您在开发和测试模式下运行 Quarkus 应用程序时,Quarkus 会自动置备并启动 Elasticsearch 容器。您的应用程序可以立即使用 Quarkus 提供的 Elasticsearch 服务,而无需首先设置和配置它。

另外,当在 Elasticsearch Dev Services 中使用 Quarkus Hibernate Search 扩展时,Elasticsearch 模式会在每个新容器实例上初始化,然后在应用程序重启时重新初始化。

有关 Elasticsearch 的 Dev Services 的更多信息,包括配置属性和限制,请参阅以下 Quarkus 社区资源:

1.3.3.3. Infinispan 的开发服务

红帽构建的 Quarkus 2.13 包含对 Infinispan 的 Dev Services 的改进。

现在,您可以通过在 application.properties 配置文件中设置属性,在 Infinispan 客户端中配置缓存。通过引入新的配置属性,在 Infinispan 客户端中实施近缓存。如需更多信息,请参阅 Quarkus "Infinispan Client" 指南中的 从客户端创建缓存 部分。

在此次更新之前,您只能在生成缓存密钥时访问方法参数。

在这个版本中,您可以访问标上 @CacheResult@CacheInvalidate 的方法的名称和参数。您还可以使用上下文和依赖注入(CDI)将外部数据注入生成器实现。

您可以通过实施 io.quarkus.cache.CacheKeyGenerator 接口并在 @CacheResult@CacheInvalidate 注解的 keyGenerator 字段中声明该实施来完成此操作。

另外,在此次更新中,生成器实施中会自动提供 Method 对象。此对象提供有关和访问的信息,您通过 @CacheResult@CacheInvalidate 注释标注的方法。使用 Method 对象的主要原因是检索方法名称,并将它用作 cache 键的一个元素。

重要

由于大多数 方法 对象方法非常昂贵,因此请小心使用它们。但是,其 Method#getName 方法既有用且成本较低。

如需更多信息,请参阅 Quarkus "Application Data caching" 指南中的使用 CacheKeyGenerator 生成缓存密钥 部分。

Red Hat build of Quarkus 2.13 引入了 @SearchExtension 注解,可让您更轻松地自定义 Hibernate Search。

在此次更新之前,当使用注解而不是配置属性为 Hibernate Search 定义自定义配置器 Bean 时,还必须在 applications.properties 文件中引用 bean。在这个版本中,您可以通过只添加 @SearchExtension 注释,在一个步骤中定义自定义配置器 Bean。例如,要为 Hibernate Search 实现分析配置器 bean,您必须完成以下步骤:

  1. 您已注解了 AnalysisConfigurer 的实现:

    @Dependent
    @Named("myAnalysisConfigurer")
    public class AnalysisConfigurer implements ElasticsearchAnalysisConfigurer {
        @Override
        public void configure(ElasticsearchAnalysisConfigurationContext context) {
            // ...
        }
    }
    Copy to Clipboard Toggle word wrap
  2. application.properties 文件中引用您的 configurer bean:

    quarkus.hibernate-search-orm.elasticsearch.analysis.configurer=bean:myAnalysisConfigurer
    Copy to Clipboard Toggle word wrap

在这个版本中,使用 @SearchExtension,您不再在 application.properties 文件中引用您的自定义 bean。您只需注解实现:

@SearchExtension
public class AnalysisConfigurer implements ElasticsearchAnalysisConfigurer {
    @Override
    public void configure(ElasticsearchAnalysisConfigurationContext context) {
        // ...
    }
}
Copy to Clipboard Toggle word wrap
注意

分析 bean 示例中提供的语法适用于以下 Hibernate Search bean 参考配置属性:

  • quarkus.hibernate-search-orm.background-failure-handler
  • quarkus.hibernate-search-orm.automatic-indexing.synchronization.strategy
  • quarkus.hibernate-search-orm.elasticsearch.layout.strategy
  • quarkus.hibernate-search-orm.elasticsearch.analysis.configurer

如需更多信息,请参阅 Quarkus 社区中的 Hibernate 搜索指南

1.3.3.6. Quarkus Transaction API

Red Hat build of Quarkus 2.13 现在支持 QuarkusTransaction API,您可以使用它以编程方式管理应用程序中的事务。现在,您可以使用 Quarkus Transaction API 来更加精细地控制事务,并确保事务在失败时正确处理事务。

有关 QuarkusTransaction API 的更多信息,请参阅 "Using transaction in Quarkus" 指南中的 Programmatic method 部分。

1.3.3.7. Spring Data REST 扩展作为稳定功能发布

Red Hat build of Quarkus 2.13 将 Spring Data REST 扩展作为稳定功能发布。在此发行版本中,它是一个技术预览功能。

使用 Spring Data 兼容性层,您可以使用 Spring Data REST 扩展来简化编写 REST 层以创建、检索、更新和删除(CRUD)操作。

如需更多信息,请参阅 Quarkus Spring Data REST 指南。

1.3.4. 日志记录

在此次更新之前,当 quarkus.log.file.rotation.max-file-size 参数没有设置时:

  • 如果设置了 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 会执行定期日志文件轮转。但是,由于 LOGMGR-303,文件大小限制为大约 650 KB,而不是记录的 10 MB。
  • 如果没有设置 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 不会执行文件大小日志文件轮转,且文件大小会持续增长。

在这个版本中,当 quarkus.log.file.rotation.max-file-size 参数没有设置时:

  • 如果设置了 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 会执行定期日志文件轮转,文件大小限制为 10 MB。
  • 如果没有设置 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 执行文件大小日志文件轮转,文件大小限制为 10 MB。
Expand
表 1.1. 2.13 中 quarkus.log.file.rotation.max-file-size 的更改概述
 

quarkus.log.file.rotation.max-file-size set

quarkus.log.file.rotation.max-file-size not set (default)

quarkus.log.file.rotation.file-suffix set

无更改:

  • 定期文件大小日志轮转。
  • 最大文件大小是 set 值。

在此次更新之前:

  • 定期日志文件轮转。
  • 由于 LOGMGR-303,文件大小限制为大约 650 KB,而不是记录的 10 MB。

在这个版本中:

  • 定期日志文件轮转。
  • 文件大小限制为 10 MB。

quarkus.log.file.rotation.file-suffix not set (default)

无更改:

  • 文件大小日志轮转。
  • 最大文件大小是 set 值。

在此次更新之前:

  • 没有文件大小日志文件轮转。
  • 文件大小随着时间持续增长。

在这个版本中:

  • 文件大小日志文件轮转。
  • 文件大小限制为 10 MB。

如需更多信息,请参阅 Quarkus"配置日志记录"指南中的 文件日志记录 部分。

1.3.5. 消息传递

1.3.5.1. smallrye Reactive Messaging 更新至 3.16 版本

在 Red Hat build of Quarkus 2.13 中,SmallRye Reactive Messaging 框架已更新至版本 3.16。

引入了以下功能:

  • 在其自身上下文中运行的消息处理,允许您隐式将数据传播到管道中。
  • Apache Kafka 的检查点 API 的初始版本。
  • 允许用户为 Apache Kafka 编写自定义失败和提交处理程序的功能。

1.3.5.2. 支持 Qpid JMS 扩展

Quarkus 支持将 Qpid JMS 扩展添加为 Quarkus 应用的一部分,并便于使用 Apache Qpid 中的 AMQP JMS 客户端,包括使用原生可执行文件构建的 AMQP JMS 客户端。

可用于 AMQP 1.0 的 JMS API 的消息代理:

  • ActiveMQ Artemis
  • ActiveMQ 5
  • Microsoft Azure 服务总线
  • Qpid Broker-J
  • Qpid Dispatch 路由器等

使用扩展:

  1. 添加 org.amqphub.quarkus:quarkus-qpid-jms 模块作为项目中的依赖项,如下所示:

    <dependency>
        <groupId>org.amqphub.quarkus</groupId>
        <artifactId>quarkus-qpid-jms</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  2. 使用 @Inject 注释注入 ConnectionFactory Java Messaging Service (JMS)代理:

    @Inject
    ConnectionFactory connectionFactory;
    Copy to Clipboard Toggle word wrap
  3. 管理 连接工厂配置

有关此扩展的示例应用用法,请查看 quarkus-qpid-jms-quickstart 存储库。

1.3.6. 安全性

1.3.6.1. OpenID Connect 预配置的供应商

在这个版本中,您可以使用 quarkus.oidc.provider 配置属性来引用知名的 OpenID Connect 和 OAuth2 供应商,如 Apple、Facebook、GitHub、Google、Microsoft、Switter 和 Twitter。

使用此属性时,您通常通过设置特定于帐户的客户端 ID、客户端 secret 以及可能的一些其他属性来完成配置。

这个新功能允许使用 OIDC 授权代码流机制来保护 Quarkus 端点,并更容易实现。

如需更多信息,请参阅 Quarkus 配置已知的 OpenID Connect 供应商 指南。

1.3.6.2. 支持 OIDC 后端通道注销

Red Hat build of Quarkus 2.13 引入了对 OpenID Connect (OIDC)扩展中的 back-channel logout 功能的支持。

在这个版本中,支持此功能的 OIDC 供应商(如 Keycloak)可以从所有参与 Quarkus 应用程序进行全局注销。

要配置对 back-channel logout 的支持,请进入 application.properties 文件并更新 quarkus.oidc.logout.backchannel.path 属性。

如需更多信息,请参阅以下资源:

1.3.6.3. 支持 OIDC 中代码交换(PKCE)

在这个版本中,增加了对 OpenID Connect (OIDC)协议的 Quarkus 实现的 proof Key for Code Exchange (PKCE)的支持。

PKCE 最小化使用 OIDC 的 Quarkus web 应用程序的授权代码拦截器风险。

如需更多信息,请参阅 Quarkus "OpenID Connect (OIDC)授权代码流机制指南中的 与 PKCE 相关的部分。

1.3.7. Web

您可以使用 quarkus.http.compress-media-types 配置属性为特定的介质类型启用 HTTP 压缩,并使用 io.quarkus.vertx.http.Compressed 注解为单独的资源方法启用 HTTP 压缩。也可以设置所需的压缩级别。

如需更多信息,请参阅 Quarkus 的 HTTP 压缩 部分"使用 RESTEasy 重新主动"指南中的 REST 服务。

1.3.7.2. 每个路径的额外 HTTP 标头

在这个版本中,您可以将 Web 应用程序配置为返回自定义 HTTP 标头值,以响应特定资源路径接收的请求。

如需更多信息,请参阅 Quarkus " HTTP Reference" 指南中的每个路径的额外 HTTP 标头部分。

1.3.7.3. 小的 GraphQL 非阻塞支持

在 Red Hat build of Quarkus 2.13 中,SmallRye GraphQL API 提供了一个 reactive 和 non-blocking 执行模型,并与 Mutiny 重新主动编程模型集成。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat