1.3. 使用 Camel Extensions for Quarkus 构建第一个项目
1.3.1. 概述 复制链接链接已复制到粘贴板!
您可以使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目,该项目会自动添加和配置要在应用程序中使用的扩展。
本节介绍了使用 Camel Extensions for Quarkus 创建 Quarkus Maven 项目的过程,包括:
- 使用 code.quarkus.redhat.com创建框架应用程序
- 添加简单的 Camel 路由
- 探索应用程序代码
- 以开发模式编译应用程序
- 测试应用程序
1.3.2. 生成框架应用程序 复制链接链接已复制到粘贴板!
项目可以在 code.quarkus.redhat.com 中引导和生成。Camel Extensions for Quarkus 扩展位于"Integration"标题下。
使用 'search' 字段查找您需要的扩展。
选择您要使用的组件扩展,并点击"Generate your application"来下载基本框架项目。另外,还可以选择将项目直接推送到 GitHub。
有关使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目的更多信息,请参阅 Quarkus 入门指南中的使用 code.quarkus.redhat.com 创建 Quarkus Maven 项目。
流程
使用 code.quarkus.redhat.com 网站,为这个示例选择以下扩展:
-
camel-quarkus-rest camel-quarkus-jackson注意您不应该按照上述步骤的最后步骤对应用程序进行编译,因为您将作为本指南的一部分执行该任务。
-
进入您在上一步中提取生成的项目文件的目录:
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 依赖项管理的更多信息,请参阅使用 Camel Extensions for Quarkus 开发应用程序
应用程序由 src/main/resources/application.properties 中定义的属性进行配置,例如: camel.context.name 可以在此处设置。
1.3.4. 添加简单的 Camel 路由 复制链接链接已复制到粘贴板!
流程
-
在
src/main/java/org/acme/子文件夹中创建一个名为Routes.java的文件。 添加 Camel Rest 路由,如以下代码片段所示:
Routes.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.5. 开发模式 复制链接链接已复制到粘贴板!
mvn clean compile quarkus:dev
$ mvn clean compile quarkus:dev
此命令编译项目,启动应用程序,并允许 Quarkus 工具监控工作区中的更改。项目中的任何修改都会在正在运行的应用程序中自动生效。
在浏览器中检查应用程序,例如 http://localhost:8080/fruits,用于 rest-json 示例。
如果您更改了应用程序代码,例如,将 '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 在验证阶段,通过
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 软件包,以准备在库存 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(可执行)权限。您可以直接运行:./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 application to native executables 指南中的 Producing a native executable。
Quarkus Native executable 指南 包含更多详细信息,包括 创建容器镜像的步骤。