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


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

1.3.1. 云

1.3.1.1. OpenShift 和 Kubernetes: Fabric8 Kubernetes 客户端升级到版本 7.1

在红帽构建的 Quarkus 3.20 中,以下扩展将 Fabric8 Kubernetes 客户端从版本 6.13 升级到 7.1。

  • quarkus-openshift
  • quarkus-openshift-client
  • quarkus-kubernetes
  • quarkus-kubernetes-client

这个升级对性能、兼容性和测试提供了一些改进。

Fabric8 Kubernetes Client 7.1 的一些主要优点:

  • 支持 Kubernetes API v1.32 以获得更好的兼容性。
  • 使用 Vert.x 而不是 OkHttp 来提高性能。
  • 添加了用于更轻松地生成自定义资源定义(CRD)的新工具。
  • 使用基于 Vert.x 的 MockWebServer 来更好地测试。

这个更改引入了破坏更改。详情请查看 本发行版本部分的"更改会影响较早版本"部分的"更改"中的备注

注意

Red Hat build of Quarkus 3.20 为 quarkus-kubernetes 扩展提供了开发者预览支持,目前不支持 quarkus-kubernetes-client 扩展。但是,如果您使用这些扩展,则上述更改可能会影响您的迁移。

这个更改需要手动干预。它不包括在 将应用程序迁移到红帽构建的 Quarkus 3.20 指南中的自动更新过程中。

1.3.2. Core

1.3.2.1. 构建器和运行时基础镜像升级到 UBI 9

从红帽构建的 Quarkus 3.20 开始,红帽构建器和运行时基础镜像默认使用 Red Hat Universal Base Image 9 (UBI 9)。

以下镜像已升级:

表 1.1. 升级的镜像
镜像UBI 8 版本UBI 9 版本

基础镜像

  • registry.access.redhat.com/ubi8/ubi:8.10
  • OpenJDK 17: registry.access.redhat.com/ubi8/openjdk-17
  • OpenJDK 21: registry.access.redhat.com/ubi8/openjdk-21
  • registry.access.redhat.com/ubi9/ubi:9.5
  • OpenJDK 17: registry.access.redhat.com/ubi9/openjdk-17
  • OpenJDK 21: registry.access.redhat.com/ubi9/openjdk-21

最小镜像

  • registry.access.redhat.com/ubi8/ubi-minimal:8.10
  • registry.access.redhat.com/ubi9-minimal:9.5

运行时镜像

  • OpenJDK 17: registry.access.redhat.com/ubi8/openjdk-17-runtime:1.21
  • OpenJDK 21: registry.access.redhat.com/ubi8/openjdk-21-runtime:1.21
  • OpenJDK 17: registry.access.redhat.com/ubi9/openjdk-17-runtime:1.21
  • OpenJDK 21: registry.access.redhat.com/ubi9/openjdk-21-runtime:1.21

构建器镜像(Mandrel)

  • registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1
  • 无变化。红帽使用 Mandrel 构建器镜像,它仍然基于 UBI 8。但是,UBI8 上生成的原生可执行文件可以在 UBI9 上运行。如需更多信息,请参见以下注释。

此升级引入了破坏更改。构建器和运行时基础镜像升级到 UBI 9

要手动升级到 UBI 9 镜像,下表概述了您的选项:

表 1.2. 手动升级到 UBI 9 的选项
镜像Actions

构建器镜像

不需要操作。在红帽构建的 Quarkus 中自动升级构建器镜像。但是,您也可以手动指定构建器镜像,如下所示:

  • -Dquarkus.native.container-build=true
  • registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1

运行时镜像

根据模式,应用以下设置:

  • JVM 模式:

    • src/main/docker/ 目录中的 Dockerfile 中,指定 registry.access.redhat.com/ubi9/openjdk-21-runtime:1.21 作为容器的基础镜像。
  • 原生模式:

    • 要使用 UBI 最小,请指定 registry.access.redhat.com/ubi9-minimal:9.5
注意

在 Red Hat build of Quarkus 原生模式中,如果您使用 in-container 构建来生成原生可执行文件,则必须使用 Mandrel 构建器镜像。在 Red Hat build of Quarkus 3.20 中,这个 Mandrel 构建器镜像仍然基于 UBI 8,但 UBI 8 上生成的原生可执行文件仍可在 UBI 9 上运行。

创建原生可执行文件时,您可以将其复制到容器镜像中,后者需要运行时镜像作为基础镜像。首选运行时镜像是基于 UBI 9 的运行时镜像: registry.access.redhat.com/ubi9-minimal:9.5

如果您在基于 UBI 9 的运行时镜像时遇到问题,您可以手动切换到基于 UBI 8 的镜像。详情请参阅 Builder 和运行时基础镜像升级到 UBI 9

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

1.3.2.2. dev 模式中的条件扩展依赖项

使用红帽构建的 Quarkus 3.20,扩展现在可以声明仅在开发模式(dev 模式)或满足特定条件的情况下激活的条件依赖项,避免在正常和测试模式中不必要的依赖项。

如需更多信息,请参阅 Quarkus "Conditional extension dependencies" 指南中的 Dev mode-only extension dependencies 部分。

1.3.2.3. 改进了默认区域设置配置

红帽构建的 Quarkus 3.20 更新区域设置处理,使其与 Mandrel 版本 24.2 及更新版本保持一致。

现在,应用程序在运行时使用一致的默认区域设置,独立于构建系统的区域设置。这个变化提高了跨环境敏感行为的可移植性和可预测性。

这个更改引入了破坏更改。详情请查看 本发行版本部分的"更改会影响较早版本"部分的"更改"中的备注

这个更改需要手动干预。它不包括在 将应用程序迁移到红帽构建的 Quarkus 3.20 指南中的自动更新过程中。

1.3.3. data

1.3.3.1. agroal: Dev UI 中的数据库连接管理增强

从红帽构建的 Quarkus 3.20 开始,quarkus-agroal 扩展添加了一个专用的 Agroal - 数据库连接 卡,以及用于监控到 Dev UI 的数据库连接的页面。

如果您的 Quarkus 应用程序包含使用 quarkus-agroal 扩展名的 JDBC 驱动程序扩展,则它会自动包含在应用程序中。

在 Dev UI 中,您可以喜欢(star) Agroal - 数据库连接池 卡。您还可以将 Database 视图 链接从卡拖到 Dev UI 菜单。点 Database 视图 会打开 Agroal - Database connection 池 页面,您可以在其中查看所有活跃的数据源,包括连接 URL。

此功能增强简化了 Dev UI 中的数据库监控和配置,改进了调试和数据库管理。

1.3.3.2. DataSource :使用 ArC 启动期间数据源验证

在红帽构建的 Quarkus 3.20 中,quarkus-datasource 扩展现在在应用程序启动期间使用 ArC 优化的依赖项注入框架验证数据源配置。此功能增强可确保早期检测到错误配置,防止运行时失败并降低流量路由到有故障实例的风险。

红帽构建的 Quarkus 的主要变化:

  • 如果数据源注入应用程序 Bean,应用程序会在启动时验证其配置。数据源配置(如这些缺少的必要属性)早期失败,而不是在第一次访问时出现错误。
  • 标记为 inactive (quarkus.datasource.active=false)或缺少所需属性的数据源不会被初始化,确保只有有效的数据源可供应用程序使用。
  • 现在,如果所需的数据源不活跃,则 Hibernate ORM 等扩展会失败,从而导致应用程序尝试使用不可用资源。
  • 标记为 inactive (quarkus.datasource.active=false)或缺少必要属性的数据源不包括在健康检查中,确保只有相关数据源贡献诊断。

如需更多信息,请参阅"Configure 数据源"指南中的 Activate 或 deactivate datasources 部分。

1.3.4. 消息传递

1.3.4.1. 引入了对 Kafka 事务的支持的消息传递 Kafka 扩展

红帽构建的 Quarkus 3.20 引进了 quarkus-messaging-kafka 扩展,它通过 SmallRye Reactive Messaging Kafka 连接器添加了对 Apache Kafka 事务的支持。此功能支持对多个 Kafka 主题和分区的原子写入,确保事务中的所有记录都被提交或无,在事件驱动的应用程序中增强数据一致性。​

此功能 作为技术预览功能提供

如需更多信息,请参阅 Quarkus "Apache Kafka 参考指南" 指南中的 Kafka Transactions 部分。

1.3.5. Observability(可观察性)

1.3.5.1. Dev UI:扩展开发人员可以在 Dev UI 页中添加日志标签页

从红帽构建的 Quarkus 3.20 开始,扩展开发人员可以在 Dev UI footer 中创建自定义日志标签页,并将日志数据流传输到其中。此过程类似于在 Dev UI 中创建卡或页面。

Log 标签页为应用程序开发人员提供持续的数据,以便在不切换工具的情况下监控应用程序并进行故障排除。与不离开时与后端断开连接的页面不同,日志选项卡将永久保持连接。

如需更多信息,请参阅 Quarkus "Dev UI for extension developers" 指南中的 Add a footer tab 部分。

1.3.5.2. Grafana OTel LGTM 仪表板

红帽构建的 Quarkus 3.20 在使用 LGTM Dev Services 时提供多个预先配置的 Grafana 仪表板。这些仪表板视觉化应用程序指标、跟踪和日志。它们将 OpenTelemetry 用于无缝数据收集和演示。有些仪表板以多种方式显示 Micrometer 数据,包括 OpenTelemetry 输出。每个仪表板都针对特定的应用程序设置进行调优。

可用的仪表板有:

  • Quarkus Micrometer OpenTelemetry :用于 Micrometer 和 OpenTelemetry 扩展。
  • Quarkus Micrometer OTLP Registry :与 Micrometer OTLP registry 扩展一起使用。
  • Quarkus Micrometer Prometheus Registry :与 Micrometer Prometheus registry 扩展一起使用。
  • Quarkus OpenTelemetry Logging: 显示 OpenTelemetry 扩展中的日志。

由于计算在滑动时间窗内,一些仪表板面板可能需要几分钟时间来显示准确的数据。

1.3.5.3. OpenTelemetry: Exclude specific URIs from OpenTelemetry tracing

在这个版本中,您可以使用 quarkus.otel.traces.suppress-application-uris 配置属性从 OpenTelemetry 中排除特定的 URI。这可让您定义 tracer 应忽略的、以逗号分隔的 URI 模式列表。

例如,设置 quarkus.otel.traces.suppress-application-uris=trace,ping,people* 将关闭对 /trace/ping URI 的追踪,以及以 /people 开始的任何 URI,如 /people/1/people/1/cars

如果您使用自定义 quarkus.http.root-path,请确保将其包含在配置中。

1.3.5.4. OpenTelemetry :使用 SimpleSpanProcessor的 span 和日志的 Immediate 导出

在 Red Hat build of Quarkus 3.20 中,quarkus-opentelemetry 扩展增加了对 SimpleSpanProcessor 的支持,后者在完成后立即导出 span 和 logs。在无服务器环境和短期应用程序中,这个行为特别有用。

要启用此功能,请将以下配置属性设置为 true

quarkus.otel.simple=true

此配置替换了默认的 BatchSpanProcessor,确保跨越和日志会立即发送,而不是被缓冲。这个变化对于 Lambda 功能和其他简短进程至关重要,因为它确保在应用程序关闭前导出遥测数据,从而防止因为批处理延迟导致的数据丢失。

1.3.5.5. OpenTelemetry :引入的日志记录支持

在 Red Hat build of Quarkus 3.20 中,quarkus-opentelemetry 扩展现在支持 OpenTelemetry (OTel)日志记录。您可以使用此功能为交互式 Web 应用程序提供分布式日志记录。

要启用此功能,请将以下配置属性设置为 true

quarkus.otel.logs.enabled=true

如需更多信息,请参阅使用 OpenTelemetry Logging 的 Quarkus 指南。

1.3.5.6. OpenTelemetry :与 MicroProfile Telemetry 2.0 一致的指标集成

在红帽构建的 Quarkus 3.20 中,quarkus-opentelemetry 扩展为 JVM 和 HTTP 服务器请求指标提供自动检测,并与 MicroProfile Telemetry 2.0 规格保持一致,只要 OpenTelemetry 指标已启用。

OpenTelemetry 指标默认为禁用。要收集 JVM 和 HTTP 服务器请求指标,您必须通过设置 quarkus.otel.metrics.enabled=true 来启用它们。

对应的配置属性会被默认启用,可以通过在配置中设置 quarkus.otel.instrument.jvm-metrics=falsequarkus.otel.instrument.http-server-metrics=false 来禁用。

带有 OpenTelemetry Metrics 集成功能的 Fault Tolerance 目前不被支持。

注意

如果您也使用 Micrometer 扩展,您应该禁用 OpenTelemetry 检测以防止潜在的冲突。

另外,如果您通过设置 quarkus.otel.metrics.exporter= logging 来配置日志记录导出器,您可能在日志中看到 OpenTelemetry 内部追踪相关的指标。日志记录 导出器仅用于调试目的,不建议在生产环境中使用。

1.3.6. 安全性

1.3.6.1. 认证:组合身份验证机制的支持

红帽构建的 Quarkus 3.20 添加了对在单个请求中使用多个身份验证机制的支持。现在,您可以在同一身份验证流中组合使用 mutual TLS (mTLS)和 OpenID Connect (OIDC) bearer 令牌身份验证等机制。

默认情况下,当第一个 SecurityIdentity 由其中一个注册身份验证机制生成时,身份验证会完成。要要求所有机制来验证凭据,请通过设置配置属性来启用包含的身份验证。

这个功能在组合 mutual TLS 和 bearer 令牌身份验证时很有用,例如在需要访问令牌绑定到客户端证书的情况下。

如需更多信息和示例,请参阅"安全架构" 指南中的组合身份验证机制 部分。

1.3.6.2. Authorization :使用 @PermissionsAllowed创建自定义安全注解

Red Hat build of Quarkus 3.20 添加了对在 meta-annotations 中使用 @PermissionsAllowed 的支持,以便您可以创建自定义安全注解以获得更精简的访问控制管理。

此功能增强简化了基于权限的配置,减少重复的安全代码,并提高了可维护性。现在,您可以定义封装 @PermissionsAllowed 的可重复使用的安全注释,使权限处理更高效和一致。

如需更多信息和示例,请参阅"web 端点授权"指南中的 Create permissions meta-annotations 部分。

1.3.6.3. Authorization: 使用 CDI bean 方法定义声明性权限检查器

从红帽构建的 Quarkus 3.20 开始,您可以使用 @PermissionChecker 注释在 CDI bean 方法中定义声明性权限检查器。此功能增强通过允许权限检查与资源类单独实施,从而减少代码重复并提高可维护性,从而支持灵活和可重复使用的授权逻辑。

这些权限检查器通过字符串等匹配权限名称来与 @PermissionsAllowed 一同工作。它们通过评估 SecurityIdentity (代表经过身份验证的用户)和传入的 HTTP 请求参数来支持通用的授权检查。这种方法允许精细访问控制。检查器必须在规范或单例 CDI Bean 中定义,并返回 布尔值Uni<Boolean&gt;,支持同步和重新主动授权检查。

此功能通过集中授权逻辑来简化权限管理,从而可以更轻松地在多个端点之间实施安全策略。开发人员可以创建通用权限检查人员,以动态验证多个操作。

如需更多信息,请参阅"web 端点授权"指南中的创建 权限检查器 部分。

1.3.6.4. OIDC: 使用来自文件系统的 JWT bearer 令牌来验证 OIDC 供应商客户端

从红帽构建的 Quarkus 3.20 开始,使用 quarkus-oidc 将 OIDC 配置为通过从文件系统中加载 JWT bearer 令牌来验证 OIDC 供应商客户端。

此方法启用安全和自动化身份验证。在容器化环境中(如 OpenShift)特别有用,服务帐户令牌可以挂载为文件。红帽构建的 Quarkus 会自动从文件中加载令牌,并在令牌过期时重新载入令牌。

有关配置详情和使用示例,请查看以下资源:

1.3.6.5. OIDC :过滤自定义处理的 OIDC 响应

在红帽构建的 Quarkus 3.20 中,以下 Quarkus 扩展引入了 OpenID Connect (OIDC)响应过滤器。

  • OpenID Connect (quarkus-oidc)
  • OpenID Connect Client (quarkus-oidc-client)

实施 OidcResponseFilter,以检查响应状态、标头和正文,用于日志记录或其他操作。

默认情况下,OIDC 响应过滤器全局应用。要以特定端点(如令牌端点)为目标,请使用 @OidcEndpoint 注释。

如需更多信息,请参阅"OpenID Connect ( OIDC)身份验证"指南中的 OIDC 响应过滤器 部分。

1.3.6.6. OIDC: mTLS-bound 访问令牌

双向 TLS (mTLS)令牌绑定通过确保访问令牌加密绑定到客户端的 mTLS 身份验证证书来提高安全性。

此功能基于 RFC 8705,通过验证用于身份验证的证书指纹是否与令牌中包含的证书指纹匹配,从而最大程度降低接受 stolen bearer 访问令牌的风险。

从红帽构建的 Quarkus 3.20 开始,Quarkus OIDC 扩展 quarkus-oidc 现在支持用于使用 OpenID Connect (OIDC)和 mTLS 保护的端点的证书绑定访问令牌。

要启用此功能,请设置以下配置属性:

quarkus.oidc.token.binding.certificate=true

如需更多信息,请参阅"OpenID Connect (OIDC)身份验证"指南中的 Mutual TLS 令牌绑定 部分。

1.3.6.7. OIDC: OidcProviderClient 注入和令牌撤销

红帽构建的 Quarkus 3.20 引入了对注入 OidcProviderClient 的支持,允许应用程序与 OpenID Connect (OIDC)供应商的 UserInfo、令牌内省和撤销端点交互。

它使开发人员能够在需要时以编程方式访问 UserInfo、令牌内省和撤销端点。例如,在用户注销后可以撤销访问令牌。

如需更多信息,请参阅 OpenID Connect (OIDC)身份验证指南中的 Token revocation 部分。

1.3.6.8. OIDC :编程创建 OIDC 租户

从红帽构建的 Quarkus 3.20 开始,使用 quarkus-oidc 开始,您可以使用 OidcTenantConfig 构建器而不是在 application.properties 文件中配置它们,以编程方式定义 OpenID Connect (OIDC)租户。

这个方法比在配置中定义 OIDC 租户提供了更大的灵活性。

这种方法对于需要静态租户的功能特别有用,如基于签发者和基于路径的租户解析器。

如需更多信息,请参阅"OpenID Connect (OIDC)身份验证"指南中的以下资源:

1.3.6.9. OIDC Client: Keycloak 的 Dev 服务不再需要 OIDC 扩展

在 Red Hat build of Quarkus 3.20 中,即使 quarkus-oidc 扩展不存在,Keyc 的 Dev Services 也会启动。这个更改可让您隔离测试 quarkus-oidc-client 扩展,而无需完整的 OIDC 扩展。

另外,Red Hat build of Quarkus 现在会在启用了 Keycloak 的 Dev Services 时自动配置密钥 OIDC Client 属性,包括:

  • quarkus.oidc-client.auth-server-url
  • quarkus.oidc-client.client-id
  • quarkus.oidc-client.credentials.secret

在以前的版本中,您必须手动设置这些属性。

这些增强是向后兼容的。现有工作流和手动配置继续按预期工作。

1.3.6.10. TLS Registry:已过期或 not-yet-valid 证书的策略配置

Red Hat build of Quarkus 3.20 现在支持在证书链的 TLS 握手过程中为处理过期或 not-yet-valid 证书配置策略。

在以前的版本中,信任存储允许此类证书没有警告,遵循 RFC 3280 和相关规格。

在这个版本中,用户可以通过选择以下选项之一来控制行为:

  • IGNORE :保留之前的行为,允许过期或未验证证书,而无需警告。
  • 警告:检测到此类证书时记录警告(新默认)。
  • REJECT :如果存在此类证书,拒绝握手。

1.3.6.11. OIDC:演示支持 Possession 的证明

在 Red Hat build of Quarkus 3.20 中,quarkus-oidc 扩展现在支持对访问令牌的演示概念验证(DPoP)。

此功能 作为技术预览功能提供

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

1.3.6.12. TLS Registry:引入 PEM 密钥存储中的加密 PKCS Serial8 私钥

在 Red Hat build of Quarkus 3.20 中,quarkus-tls-registry 扩展引进了对 PEM 密钥存储中加密的 PKCS#8 私钥的支持。

此功能 作为技术预览功能提供

它使开发人员能够使用 AES-128-CBC 加密保护私钥,从而提高了应用程序安全性。

要使用此功能,请使用密钥存储密码设置 quarkus.tls.key-store.pem.password 属性。

如需更多信息,请参阅使用 TLS Registry 指南管理安全密钥和证书

1.3.7. 工具

1.3.7.1. 为在 Dev 模式下运行的应用程序在扩展元数据中配置 JVM 选项

使用红帽构建的 Quarkus 3.20,扩展作者可以为在开发模式下运行的应用程序定义 JVM 选项。它们可以指定这些选项,如 --enable-preview or--add-opens 直接在扩展元数据中,无需由应用程序开发人员配置。

在开发模式下运行时,扩展会自动应用这些 JVM 选项,确保所有应用程序开发人员都提供一致的环境。

应用程序开发人员可以关闭所有扩展提供的 JVM 选项,或使用 Quarkus Maven 插件选择性地关闭特定扩展的选项。如需更多信息,请参阅 Quarkus "Quarkus and Maven" 指南中的 Extension provided Dev mode Java options 部分。

1.3.8. web

1.3.8.1. Dev UI:添加到 Dev UI 的 HTTP 访问日志

从红帽构建的 Quarkus 3.20 开始,Dev UI 页包含一个 HTTP 选项卡,您可以使用它来监控传入的 HTTP 访问日志消息,而无需切换工具或上下文。

例如,如果您在 Dev UI 中使用 SmallRye OpenAPI - Swagger UI 页面与应用程序的 HTTP 端点交互,您可以在 Dev UI footer 的 HTTP 标签页中看到对应的日志消息。

如需更多信息,请参阅 Quarkus " HTTP 参考" 指南中的 配置 HTTP 访问日志 部分。

1.3.8.2. REST:作为 REST 参数的 Java 记录

红帽构建的 Quarkus 3.20 引入了对 Java 记录的支持,作为 REST 端点参数容器,从而启用了简洁和不可变的数据结构。记录可以封装查询、Cookie、标头、表单或多部分参数,简化了 RESTful 服务中的数据处理。

Java 记录已经可用于 JSON 序列化和 REST bodies 的反序列化。但是,由于 Jakarta REST 规格的限制,@BeanParam 尚不支持它们。

1.3.8.3. REST 和 RESTEasy: @AuthorizationPolicy 注释引入

在红帽构建的 Quarkus 3.20 中,quarkus-restquarkus-resteasy 扩展增加了对新的 @AuthorizationPolicy 注解的支持。您可以使用此注解将指定 HttpSecurityPolicy 直接绑定到 Jakarta REST 端点。此功能提供了路径匹配规则的替代选择,并在不修改 SecurityIdentity 角色的情况下启用更灵活的授权检查。

如需更多信息,请参阅"web 端点授权"指南中的 Custom HttpSecurityPolicy 部分。

1.3.8.4. REST Client: 使用 @Url 注解动态每个invocation URL

在红帽构建的 Quarkus 3.20 中,quarkus-rest-client 扩展增加了对 @Url 注释的支持。现在,您可以在 REST 客户端方法中注解参数,以便在运行时动态提供 URL。

通常,REST 客户端需要全局配置的基本 URL。然而,有些情况需要基于每个invocation 来设置 URL。@Url 注释通过为单个调用启用动态 URL 解析来支持这种用例。

如需更多信息,请参阅 Quarkus "使用 REST Client" 指南中的 Dynamic base URL 部分。

1.3.8.5. REST Client:MicroProfile REST 客户端更新至版本 4.0

在红帽构建的 Quarkus 3.20 中,quarkus-rest-client 扩展已更新至 MicroProfile REST 客户端 4.0。这个版本通过提供用于创建和管理 REST 客户端的标准化声明 API 增强了应用程序与 RESTful 服务交互的方式。它提高了灵活性、性能和安全性,同时简化外部 REST 服务的集成。

1.3.8.6. REST Jackson:通过 reflection-free deserialization 增强 JSON 处理

在红帽构建的 Quarkus 3.20 中,quarkus-rest-jackson 扩展通过引入 reflection-free deserialization 来增强其 JSON 处理功能。

此增强补充了自由的序列化功能,它在早期版本中实现。

默认情况下,S reflection-free JSON 处理被禁用。要启用它,请将以下配置属性设置为 true

quarkus.rest.jackson.optimization.enable-reflection-free-serializers=true

通过消除反序列化期间反映的依赖,应用程序可以获得更好的性能并降低内存消耗,特别是对于反映可能会引入开销的原生应用程序。如果启用此功能,请运行测试以评估其对应用程序的影响。

如需更多信息,请参阅 Quarkus "Writing REST services with Quarkus REST" 指南中的 JSON serialisation 部分。

1.3.8.7. 引入 Websocket 下一步扩展

红帽构建的 Quarkus 3.20 引入了对 quarkus-websockets-next 扩展的支持,它提供了一个现代的声明性 API 来定义 WebSocket 服务器和客户端端点。

此扩展支持高效、可扩展的实时通信,并与红帽构建的 Quarkus 的被动架构和网络层集成。

与已弃用的 quarkus-websockets 扩展不同,WebSockets Next 不会实现 Jakarta WebSocket 规格。

WebSockets Next 引入的主要功能:

改进了安全集成

Websocket 下一步支持与 Quarkus 安全和身份提供程序进行无缝集成。每个 WebSocket 连接都与一个 SecurityIdentity 关联,在 HTTP 升级过程中启用早期授权。开发人员可以使用标准安全注解或权限检查器保护端点。对于支持自定义标头的客户端,不支持 bearer 令牌身份验证。JavaScript 客户端无法设置自定义授权标头,可以使用 Sec-WebSocket-Protocol 标头来传递令牌。另外,当 OIDC 令牌过期时,红帽构建的 Quarkus 会自动关闭 WebSocket 连接。

详情请查看 "WebSockets Next reference" 指南中的 Security 部分。

结构化消息处理

扩展支持内置的 JSON 序列化和反序列化。String,JsonObject,JsonArray,Buffer, 和 byte[] 等常见类型在没有转换的情况下发送。您可以提供一个自定义 codec 来自定义消息如何序列化或反序列化。

如需更多信息,请参阅 Serialization 和 deserialization 部分。

Observability 集成

Websocket Next 与 OpenTelemetry 和 Micrometer 集成,以增强可观察性。如果存在 OpenTelemetry 扩展,它会自动捕获打开和关闭 WebSocket 连接的 trace,并将其链接到初始握手范围。启用 Micrometer 支持时,WebSockets Next 会收集 WebSocket 活动的指标。

有关配置详情,请参阅 WebSockets Next 参考指南的 Telemetry 部分。

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.