1.3. Red Hat build of Apache Camel for Quarkus を使用した最初のプロジェクトのビルド
1.3.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
code.quarkus.redhat.com を使用して、Quarkus Maven プロジェクトを生成できます。このプロジェクトは、アプリケーションで使用するエクステンションを自動的に追加および設定します。
このセクションでは、Red Hat build of Apache Camel for Quarkus を使用して Quarkus Maven プロジェクトを作成するプロセスを説明します。このプロセスには以下が含まれます。
- code.quarkus.redhat.com を使用したスケルトンアプリケーションの作成
- 簡単な Camel ルートの追加
- アプリケーションコードの探索
- 開発モードでのアプリケーションのコンパイル
- アプリケーションのテスト
1.3.2. code.quarkus.redhat.com を使用したスケルトンアプリケーションの生成 リンクのコピーリンクがクリップボードにコピーされました!
code.quarkus.redhat.com で、プロジェクトのブートストラップと生成を行うことができます。
Red Hat build of Apache Camel for Quarkus エクステンションは、'Integration' という見出しの下にあります。
追加のエクステンションが必要な場合は、'search' フィールドを使用して見つけてください。
使用するコンポーネントエクステンションを選択し、'Generate your application' をクリックして基本的なスケルトンプロジェクトをダウンロードします。
プロジェクトを GitHub に直接プッシュすることもできます。
code.quarkus.redhat.com を使用して Quarkus Maven プロジェクトを生成する方法の詳細は、Red Hat build of Quarkus のスタートガイド の code.quarkus.redhat.com を使用した Quarkus Maven プロジェクトの作成 を参照してください。
手順
code.quarkus.redhat.com Web サイトで、次のエクステンションを選択します。
-
camel-quarkus-rest -
camel-quarkus-jackson camel-quarkus-direct注記code.quarkus.redhat.com のアプリケーションをコンパイルしないでください (手順の最終ステップ)。代わりに、以下の 「開発モード」 セクションで説明されているコンパイルコマンドを使用してください。
-
直前の手順で生成されたプロジェクトファイルの展開先ディレクトリーに移動します。
cd <directory_name>
$ cd <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. アプリケーションコードの探索 リンクのコピーリンクがクリップボードにコピーされました!
このアプリケーションには、<dependencyManagement> でインポートされた com.redhat.quarkus.platform:quarkus-camel-bom 内で管理されるコンパイル依存関係が 2 つあります。
pom.xml
BOM 依存関係管理の詳細は、Red Hat build of Apache Camel for Quarkus を使用したアプリケーションの開発 を参照してください。
アプリケーションは、src/main/resources/application.properties 内で定義されたプロパティーで設定できます。たとえば、camel.context.name を設定できます。
1.3.4. 簡単な Camel ルートの追加 リンクのコピーリンクがクリップボードにコピーされました!
この例では、camel-quarkus-examples リポジトリーの簡単な例を使用します。これは、2 つの単純なクラス Fruit.java、Legume.java、およびルート定義 Routes.java で構成されています。
手順
-
src/main/java/org/acme/サブフォルダーにFruit.javaという名前のファイルを作成します。 以下のコードスニペットのようにクラスを追加します。
Fruit.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
src/main/java/org/acme/サブフォルダーにLegume.javaという名前のファイルを作成します。 以下のコードスニペットのようにクラスを追加します。
Legume.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
src/main/java/org/acme/サブフォルダーにRoutes.javaという名前のファイルを作成します。 以下のコードスニペットのように Camel Rest ルートを追加します。
Routes.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例の詳細は、camel-quarkus-examples リポジトリー を参照してください。
1.3.5. 開発モード リンクのコピーリンクがクリップボードにコピーされました!
mvn clean compile quarkus:dev
$ mvn clean compile quarkus:dev
このコマンドでは、プロジェクトのコンパイル、アプリケーションの起動、Quarkus ツールでのワークスペースの変更監視などを行います。プロジェクトに加えた変更は、実行中のアプリケーションに自動的に反映されます。
ブラウザーでアプリケーションを確認できます。(たとえば、rest-json サンプルアプリケーションの場合は、http://localhost:8080/fruits にアクセスします。)
アプリケーションコードを変更する場合 (例: 'Apple' を 'Orange' に変更)、アプリケーションは自動的に更新されます。適用された変更を確認するには、ブラウザーを更新してください。
開発モードの詳細は、Quarkus のドキュメントの 開発モード のセクションを参照してください。
1.3.6. テスト リンクのコピーリンクがクリップボードにコピーされました!
1.3.6.1. JVM モード リンクのコピーリンクがクリップボードにコピーされました!
JVM モードで作成した Camel Rest ルートをテストするには、以下のようにテストクラスを追加します。
手順
-
src/test/java/org/acme/サブフォルダーにRoutesTest.javaという名前のファイルを作成します。 以下のコードスニペットのように
RoutesTestクラスを追加します。RoutesTest.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
JVM モードテストは、Maven の test フェーズで maven-surefire-plugin によって実行されます。
mvn clean test
$ mvn clean test
1.3.6.2. ネイティブモード リンクのコピーリンクがクリップボードにコピーされました!
ネイティブモードで作成した Camel Rest ルートをテストするには、以下のようにテストクラスを追加します。
手順
-
src/test/java/org/acme/サブフォルダーにNativeRoutesIT.javaという名前のファイルを作成します。 以下のコードスニペットのように
NativeRoutesITクラスを追加します。NativeRoutesIT.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネイティブモードテストは、
verifyフェーズでmaven-failsafe-pluginを使用して検証されます。nativeプロパティーを渡して、テストを実行するプロファイルをアクティベートします。mvn clean verify -Pnative
$ mvn clean verify -PnativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
詳細と、CamelTestSupport スタイルのテストの使用方法は、Camel Quarkus 拡張機能のテスト を参照してください。
1.3.7. アプリケーションのパッケージ化と実行 リンクのコピーリンクがクリップボードにコピーされました!
1.3.7.1. JVM モード リンクのコピーリンクがクリップボードにコピーされました!
手順
mvn packageを実行して、ストック JVM で実行するための thinjarを準備します。mvn clean package ls -lh target/quarkus-app ... -rw-r--r--. 1 user user 238K Oct 11 18:55 quarkus-run.jar ...
$ mvn clean package $ ls -lh target/quarkus-app ... -rw-r--r--. 1 user user 238K Oct 11 18:55 quarkus-run.jar ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記シン形式の
jarにはアプリケーションコードのみが含まれます。実行するには、target/quarkus-app/libの依存関係も必要です。次のように jar を実行します。
java -jar target/quarkus-app/quarkus-run.jar ... [io.quarkus] (main) Quarkus started in 1.163s. Listening on: http://[::]:8080
$ java -jar target/quarkus-app/quarkus-run.jar ... [io.quarkus] (main) Quarkus started in 1.163s. Listening on: http://[::]:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow
起動時間は約 1 秒です。
1.3.7.2. ネイティブモード リンクのコピーリンクがクリップボードにコピーされました!
手順
ネイティブ実行可能ファイルを準備するには、次のようにします。
コマンド
mvn clean package -Pnativeを実行します。mvn clean package -Pnative ls -lh target ... -rwxr-xr-x. 1 user user 46M Oct 11 18:57 code-with-quarkus-1.0.0-SNAPSHOT-runner ...
$ mvn clean package -Pnative $ ls -lh target ... -rwxr-xr-x. 1 user user 46M Oct 11 18:57 code-with-quarkus-1.0.0-SNAPSHOT-runner ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記runnerには.jar拡張子がなく、x(実行可能) パーミッションが設定されています。これは次のように直接実行できます。./target/*-runner ... [io.quarkus] (main) Quarkus started in 0.013s. Listening on: http://[::]:8080 ...
$ ./target/*-runner ... [io.quarkus] (main) Quarkus started in 0.013s. Listening on: http://[::]:8080 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションは 13 ミリ秒で開始しました。
ps -o rss,command -p $(pgrep code-with)コマンドでメモリー使用量を表示します。ps -o rss,command -p $(pgrep code-with) RSS COMMAND 65852 ./target/code-with-quarkus-1.0.0-SNAPSHOT-runner
$ ps -o rss,command -p $(pgrep code-with) RSS COMMAND 65852 ./target/code-with-quarkus-1.0.0-SNAPSHOT-runnerCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションは 65 MB のメモリーを使用します。
ネイティブ実行可能ファイルの準備に関する追加情報は、Quarkus アプリケーションのネイティブ実行可能ファイルへのコンパイル ガイドの ネイティブ実行可能ファイルの作成 を参照してください。
Quarkus Native executable guide には、コンテナーイメージを作成する手順 などの詳細情報が記載されています。