1.3. 使用红帽构建的 Apache Camel for Quarkus 构建第一个项目
1.3.1. 概述 复制链接链接已复制到粘贴板!
您可以使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目,该项目会自动添加并配置要在应用程序中使用的扩展。
本节介绍了使用红帽构建的 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 扩展位于"集成"标题下。
如果您需要额外的扩展,请使用 '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 节 “开发模式” 部分描述的 compile 命令。
-
进入从上一步中提取生成的项目文件的目录:
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& gt; 中导入的:
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. 原生模式 复制链接链接已复制到粘贴板!
要测试我们在 Native 模式中创建的 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 上运行的精简jar:mvn clean package ls -lh target/quarkus-app
$ 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
$ 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
$ 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(executable)权限。您可以直接运行它:./target/*-runner
$ ./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)
$ 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 applications to native executables 指南中的 Producing a native executable。
Quarkus 原生可执行文件 包含更多详细信息,包括 创建容器镜像的步骤。