Quarkus 1.3 と Eclipse MicroProfile 3.3

この記事は、Quarkus.io のブログ記事、Quarkus 1.3 and 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の不正なキャッシュを防ぐための修正と、それに関連するクラスローダの問題も含まれます。

また、暗黙的コンバータの優先度を調整し、byte,short,char用のコンバータを追加しました。優先度の変更は、暗黙的な変換がコンストラクタを使用する前に静的メソッドを使用することを意味します。

Fault Tolerance

CircuitBreakerとFallbackはどちらもskipOnプロパティを追加し、FallbackはapplyOnプロパティを追加して、呼び出し側への動作または通過をきかっけとする例外を定義できるようにしました。なぜこれが重要なのでしょうか?

実際の使用例では、特定の例外に対する高可用性戦略を起動する必要があり、また、戦略が適用されないようにするために、他の例外を通常として扱うことができます。

Health

すべての修飾子にAnnotationリテラルを追加してプログラムによる検索を容易にし、HealthCheckResponseを具象クラスに切り替えて利用側で使用できるようにするなど、いくつかの小さな更新が含まれています。

Metrics

平均および分布計算を実行しない@SimplyTimedが追加されました。メソッドに費やされたヒット数と時間のみを計算します。@SimplyTimedは、Prometheusが@SimplyTimedの生データを使用して計算を実行できるため、計算時間を短縮する@Timedの「単純な」バージョンです。

仕様では、JAX-RS呼び出しに固有のオプションのメトリックも定義しています。JAX-RSメソッドごとにSimple Timerがあるので、リクエストの合計数とそのメソッドにかかった合計時間を測定します。

この仕様では、JVMが占有するCPU時間を追跡する、もう1つのオプションの基本メトリックProcessCpuTimeも追加されています。この値はJDKインタフェースからは使用できず、Sunの内部インタフェースからのみ使用できるため、オプションです。

REST Client

今回のリリースでは、ClientHeadersFactoryへのCDI注入をサポートすることが仕様の要件であると定義しています。これにより、以前は@Injectをクラスに挿入できなかった隔たりが解消されます。

インジェクションポイントの@RestClient修飾子に@Targetが指定され、Kotlinでの使用が可能になりました。以前のリリースでこの問題に悩まされたQuarkusユーザの多くはKotlinを使っています。

Standalone

MicroProfileプラットフォーム内の仕様に加えて、QuarkusはReactive Streams Operators、Reactive Messaging、Context Propagationの実装も含んでいます。ImperativeでもReactiveでも、Quarkusには必要なものが揃っています。

近い将来、Quarkusは長時間実行アクションとGraphQLのための新しいスタンドアロン仕様の実装も開始するでしょう。

要約

Quarkus 1.3のリリースは、SmallRyeにMicroProfile仕様を実装し、それをQuarkusで利用するという私たちの約束を継続するものです。開発者が必要としているものを提供できるように、MicroProfileの機能に関するフィードバックを提供してください。主要な機能が不足している場合は、お知らせください!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。