1.3. 使用红帽构建的 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 上引导并生成项目。
红帽构建的 Apache Camel for Quarkus 扩展位于 'Integration' 标题下。
如果您需要额外的扩展,请使用 'search' 字段来查找它们。
选择您要处理的组件扩展,并点击 'Generate your application' 下载基本框架项目。
您还可以直接将项目推送到 GitHub。
有关使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目的更多信息,请参阅 Getting started with Red Hat build of Quarkus 指南中的使用 code.quarkus.redhat.com 创建 Quarkus Maven 项目。
流程
在 code.quarkus.redhat.com 网站中,选择以下扩展:
-
camel-quarkus-rest -
camel-quarkus-jackson camel-quarkus-direct注意不要在 code.quarkus.redhat.com 上编译应用程序(在流程的最后一步中)。反之,使用下面 第 1.3.5 节 “开发模式” 部分描述的编译命令。
-
进入从上一步中提取生成的项目文件的目录:
cd <directory_name>
$ cd <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. 探索应用程序代码 复制链接链接已复制到粘贴板!
应用程序有两个编译依赖项,它们在 com.redhat.quarkus.platform:quarkus-camel-bom 中管理,它们导入在 < dependencyManagement> 中。
pom.xml
有关 BOM 依赖项管理的更多信息,请参阅使用红帽构建的 Apache Camel for Quarkus 开发应用程序
该应用由 src/main/resources/application.properties 中定义的属性进行配置,例如,可以在其中设置 camel.context.name。
1.3.4. 添加简单的 Camel 路由 复制链接链接已复制到粘贴板!
在本例中,我们使用 camel-quarkus-examples 存储库中的简单示例。它由两个简单的类 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 模式测试由 test Maven 阶段的 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以准备一个精简jar在库存 JVM 上运行: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.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 注意运行程序没有.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 内存。
有关准备原生可执行文件的更多信息,请参阅 Compiling your Quarkus 应用程序到原生可执行文件指南中的 Produc ing a native executable。
Quarkus 原生可执行文件指南 包含更多详细信息,包括 创建容器镜像的步骤。