第 4 章 例子
下表中列出的快速入门示例可以从 Camel Quarkus Examples Git 存储库克隆或下载。
示例数:1
| 示例 | 描述 |
|---|---|
| 演示了如何使用 CSV 文件,marshal 和 unmarshal,并通过 FTP 将其发送。 |
4.1. 文件消费者快速入门示例 复制链接链接已复制到粘贴板!
您可以从 Camel Quarkus Examples Git 仓库下载或克隆快速入门。示例位于 file-bindy-ftp 目录中。
提取 zip 文件的内容或将存储库克隆到本地文件夹,例如一个名为 quickstarts 的新文件夹。
您可以在命令行中以开发模式运行此示例。通过使用开发模式,您可以快速迭代开发中的集成,并快速获得对代码的反馈。如需了解更多详细信息,请参阅 Camel Quarkus 用户指南中的开发模式 部分。
如果您需要配置容器资源限制或启用 Quarkus Kubernetes 客户端来信任自签名证书,您可以在 src/main/resources/application.properties 文件中找到这些配置选项。
先决条件
-
有
集群管理员对 OpenShift 集群的访问权限。 -
您可以访问 SFTP 服务器,并且您已在应用属性配置文件中设置服务器属性(由
ftp前缀):src/main/resources/application.properties。
流程
使用 Maven 以开发模式构建示例应用程序:
cd quickstarts/file-bindy-ftp mvn clean compile quarkus:dev
$ cd quickstarts/file-bindy-ftp $ mvn clean compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 应用程序每 10 秒触发定时器组件,生成一些随机的"books"数据,并在带有 100 条目的临时目录中创建 CSV 文件。在控制台中显示以下信息:
[route1] (Camel (camel-1) thread #3 - timer://generateBooks) Generating randomized books CSV data
[route1] (Camel (camel-1) thread #3 - timer://generateBooks) Generating randomized books CSV dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 接下来,CSV 文件由文件消费者读取,Bindy 用于将单个数据行放入 Book 对象:
[route2] (Camel (camel-1) thread #1 - file:///tmp/books) Reading books CSV data from 89A0EE24CB03A69-0000000000000000
[route2] (Camel (camel-1) thread #1 - file:///tmp/books) Reading books CSV data from 89A0EE24CB03A69-0000000000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接下来,Book 对象集合被分成单独的项目,并根据 genre 属性进行聚合:
[route3] (Camel (camel-1) thread #0 - AggregateTimeoutChecker) Processed 34 books for genre 'Action' [route3] (Camel (camel-1) thread #0 - AggregateTimeoutChecker) Processed 31 books for genre 'Crime' [route3] (Camel (camel-1) thread #0 - AggregateTimeoutChecker) Processed 35 books for genre 'Horror'
[route3] (Camel (camel-1) thread #0 - AggregateTimeoutChecker) Processed 34 books for genre 'Action' [route3] (Camel (camel-1) thread #0 - AggregateTimeoutChecker) Processed 31 books for genre 'Crime' [route3] (Camel (camel-1) thread #0 - AggregateTimeoutChecker) Processed 35 books for genre 'Horror'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,聚合的书集合可以返回至 CSV 格式,并上传到测试 FTP 服务器。
[route4] (Camel (camel-1) thread #2 - seda://processed) Uploaded books-Action-89A0EE24CB03A69-0000000000000069.csv [route4] (Camel (camel-1) thread #2 - seda://processed) Uploaded books-Crime-89A0EE24CB03A69-0000000000000069.csv [route4] (Camel (camel-1) thread #2 - seda://processed) Uploaded books-Horror-89A0EE24CB03A69-0000000000000069.csv
[route4] (Camel (camel-1) thread #2 - seda://processed) Uploaded books-Action-89A0EE24CB03A69-0000000000000069.csv [route4] (Camel (camel-1) thread #2 - seda://processed) Uploaded books-Crime-89A0EE24CB03A69-0000000000000069.csv [route4] (Camel (camel-1) thread #2 - seda://processed) Uploaded books-Horror-89A0EE24CB03A69-0000000000000069.csvCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要在 JVM 模式下运行应用程序,请输入以下命令:
mvn clean package -DskipTests java -jar target/*-runner.jar
$ mvn clean package -DskipTests $ java -jar target/*-runner.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来将示例应用程序构建和部署到 OpenShift:
mvn clean package -DskipTests -Dquarkus.kubernetes.deploy=true
$ mvn clean package -DskipTests -Dquarkus.kubernetes.deploy=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 pod 是否正在运行:
$oc get pods NAME READY STATUS RESTARTS AGE camel-quarkus-examples-file-bindy-ftp-1-d72mb 1/1 Running 0 5m15s ssh-server-deployment-5f6f685658-jtr9n 1/1 Running 0 5m28s
$oc get pods NAME READY STATUS RESTARTS AGE camel-quarkus-examples-file-bindy-ftp-1-d72mb 1/1 Running 0 5m15s ssh-server-deployment-5f6f685658-jtr9n 1/1 Running 0 5m28sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:输入以下命令监控应用程序日志:
oc logs -f camel-quarkus-examples-file-bindy-ftp-5d48f4d85c-sjl8k
oc logs -f camel-quarkus-examples-file-bindy-ftp-5d48f4d85c-sjl8kCopy to Clipboard Copied! Toggle word wrap Toggle overflow