Quarkus 1.3 and Eclipse MicroProfile 3.3
With the announcement that Quarkus 1.3 is now available, we’re pleased to additionally announce that Quarkus 1.3 passes the TCKs of all Eclipse MicroProfile 3.3 specifications.
MicroProfile 3.3 includes the following specification updates:
-
Config 1.4
-
Fault Tolerance 2.1
-
Health 2.2
-
Metrics 2.3
-
REST Client 1.4
Config
The Config update includes fixes to prevent the incorrect caching of ConfigProviderResolver
and classloader issues related to it as well.
It also adjusted the priority of implicit converters and added converters for byte
, short
, and char
.
The priority change means that implicit conversion will utilize any static methods before attempting to use a constructor.
Fault Tolerance
CircuitBreaker
and Fallback
both added the skipOn
property and Fallback
added the applyOn
property
so that it’s now possible to define exceptions that should trigger the behavior or pass-through to the caller.
Why is this important?
Real-world use cases were identified where triggering a fault tolerance strategy for certain exceptions is required, and also being able to treat other exceptions as normal to prevent a strategy from being applied.
Health
It contains a few minor updates that include adding Annotation literals to all qualifiers to ease
programmatic lookup and switching HealthCheckResponse
to be a concrete class,
enabling its use on the consuming end.
Metrics
Added @SimplyTimed
which doesn’t perform mean and distribution calculations.
It only calculates hit count and time spent on a method.
@SimplyTimed
is a “simple” version of @Timed
that reduces calculation time,
as these calculations can be performed by Prometheus with the raw data from @SimplyTimed
.
The specification now also defines optional metrics specific to JAX-RS invocations. For each JAX-RS method, there is a Simple Timer, so we measure the total count of requests and the total time spent in that method.
The specification also adds one more optional base metric, ProcessCpuTime, which tracks the CPU time occupied by the JVM. It is optional because its value is not available from a JDK interface, only an internal Sun one.
REST Client
Now defines that supporting CDI injection into ClientHeadersFactory
is a requirement of the specification.
This resolves a gap where previously it was not possible to @Inject
into the class.
The @RestClient
qualifier for injection points now has @Target
specified, enabling its usage with Kotlin.
There are many Quarkus users using Kotlin that were bitten by this problem in previous releases.
Standalone
In addition to the specifications within the MicroProfile platform, Quarkus also includes implementations of Reactive Streams Operators, Reactive Messaging, and Context Propagation. Whether it’s Imperative or Reactive we’ve got what you need in Quarkus!
In the near future, Quarkus will also begin including implementations for the new standalone specifications for Long-Running Actions and GraphQL.
Summary
The release of Quarkus 1.3 continues our commitment to implementing the MicroProfile specifications in SmallRye and utilizing them in Quarkus. Please provide feedback on the MicroProfile features to ensure we’re providing what developers need and want. If we’re missing key functionality, please let us know!