The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
Posts by Bennet Schulz

Posts by Bennet Schulz

Posts

AWS CloudWatch用のQuarkusエクステンションの作成 最近、QuarkusのアプリケーションログをAWS CloudWatchにロギングしたいという状況になりました。基本的には時間がかかりますが、大したことではありません。CloudWatchの依存関係を追加し、Log Handlerを作成し、提供されているAWS CloudWatch APIを介してCloudWatchにログをプッシュします。しかし、それを他の人と共有したい場合はどうでしょうか?もちろん、プロジェクトの一部としてGitHubに置いて、他の人がコピー&ペーストできるようにすることもできますが、それはコードを他の人と共有する最もエレガントな方法ではありません。 そのため、私たちはQuarkusのエクステンションを実装しました。これにより、他のユーザーがより簡単にQuarkusを使用できるようになり、車輪の再発明やコピーペーストの必要がなくなりました。どうすればいいのでしょうか?ここで、Quarkiverse Hubの出番です。Quarkiverseは、開発者が自分の拡張機能をホストして他の人と共有できるGitHubの組織です。エクステンションをQuarkiverseでホスティングすることで、従来のように自分ですべての作業を行うのではなく、無料でいくつかのメリットを得ることができます。Quarkiverseを使用すると、アーティファクトをビルドし、Sonatype Nexus Manager(または類似のもの)でリリースし、Maven Centralや他のリポジトリで配布する必要がありません。Quarkiverseにはこれらがすべて付属しているので、エクステンションの実装自体に集中することができます。以下の投稿では、CloudWatch Quarkusエクステンションを初期化、実装、共有するために必要なことを説明します。 Quarkiverseを使用してエクステンションをハブで公開し(これは私たちが推奨する方法です)、それによって得られるすべての利点を利用したい場合は、単にquarkusio/quarkusのGitHub組織で新しいエクステンション提案の課題をオープンする必要があります。こうすることで、テンプレートが生成され、あなたはエクステンションのコードを実装するだけなので、ほとんどの要件はすでに満たされていることになります。既存のプロジェクトをテンプレートとして使用する場合は、いくつかの要件に注意する必要があります。エクステンションのリリースやドキュメントの公開を自動化するために、Quarkiverseの組織下にあるプロジェクトには従わなければならないルールがあります。 The extension repository should be named quarkus-<project> A Quarkiverse extension MUST belong to the io.quarkiverse.<project> groupId The root pom.xml MUST inherit from io.quarkiverse:quarkiverse-parent A Quarkiverse extension contains the following folders and files: deployment runtime integration-test docs pom.xml LICENSE README この記事では、runtimeとdeploymentの中身のみを取り上げます。その他の中身は、オプションであったり、すでにプロジェクトテンプレートによって生成されていたり、あるいは重要であっても、Quarkusのエクステンションがどのように作成されるかを知りたい場合には、最も重要で実用的なものではありません。まず、導入セクションから始めましょう。ここには、Quarkusエクステンションの初期化に必要なクラスが含まれています。この初期化クラスがないと、Quarkusアプリケーションの起動時にエクステンションが識別されません。 class LoggingCloudwatchProcessor { @BuildStep FeatureBuildItem feature() { return new FeatureBuildItem("logging-cloudwatch"); } @BuildStep @Record(ExecutionTime.RUNTIME_INIT) LogHandlerBuildItem addCloudwatchLogHandler(final LoggingCloudWatchConfig config, final LoggingCloudWatchHandlerValueFactory cloudWatchHandlerValueFactory) {...