Quarkus 1.3 和 Eclipse MicroProfile 3.3

随着 Quarkus 1.3 发布的消息,我们也高兴地宣布 Quarkus 1.3 通过了所有 Eclipse MicroProfile 3.3 规范的 TCK 测试。

MicroProfile 3.3 包含以下规范更新

  • Config 1.4

  • Fault Tolerance 2.1

  • Health 2.2

  • Metrics 2.3

  • REST Client 1.4

Config

Config 更新包括了修复,以防止 ConfigProviderResolver 的错误缓存及其相关的类加载器问题。

它还调整了隐式转换器的优先级,并为 byteshortchar 添加了转换器。优先级更改意味着隐式转换将利用任何静态方法,然后再尝试使用构造函数。

Fault Tolerance

CircuitBreakerFallback 都添加了 skipOn 属性,Fallback 添加了 applyOn 属性,因此现在可以定义触发行为或传递给调用者的异常。这为什么重要?

我们发现了一些实际用例,其中需要为特定异常触发容错策略,同时也能够将其他异常视为“正常”,以防止应用策略。

Health

它包含了一些小的更新,包括为所有限定符添加注解字面量,以便于以编程方式查找,并将 HealthCheckResponse 改为具体类,使其可以在消费端使用。

Metrics

添加了 @SimplyTimed,它不执行平均值和分布计算。它只计算方法的命中次数和花费的时间。@SimplyTimed@Timed 的“简单”版本,可以减少计算时间,因为这些计算可以由 Prometheus 使用 @SimplyTimed 的原始数据来完成。

该规范现在还定义了特定于 JAX-RS 调用的可选指标。对于每个 JAX-RS 方法,都有一个 Simple Timer,因此我们可以测量请求的总数和在该方法中花费的总时间。

该规范还增加了一个可选的基准指标 ProcessCpuTime,用于跟踪 JVM 占用的 CPU 时间。它是可选的,因为其值无法从 JDK 接口获得,只能从内部 Sun 接口获得。

REST Client

现在规定支持将 CDI 注入 ClientHeadersFactory 是该规范的要求。这解决了之前无法将 @Inject 注入该类的问题。

用于注入点的 @RestClient 限定符现在指定了 @Target,使其可以在 Kotlin 中使用。有许多使用 Kotlin 的 Quarkus 用户在之前的版本中遇到了这个问题。

独立

除了 MicroProfile 平台中的规范之外,Quarkus 还包括 Reactive Streams Operators、Reactive MessagingContext Propagation 的实现。无论是命令式还是响应式,Quarkus 都能满足您的需求!

在不久的将来,Quarkus 还将开始包含 Long-Running Actions 和 GraphQL 新独立规范的实现。

总结

Quarkus 1.3 的发布继续了我们通过 SmallRye 实现 MicroProfile 规范并在 Quarkus 中使用它们的承诺。请对 MicroProfile 功能提供反馈,以确保我们提供开发者所需和想要的。如果我们缺少关键功能,请告诉我们!