第 8 章 将 Camel 应用程序与 A-MQ Broker 集成
本教程介绍了如何使用 A-MQ 镜像部署快速入门。
8.1. 构建和部署 Spring Boot Camel A-MQ Quickstart
这个示例需要 JBoss A-MQ 6 镜像和部署模板。如果您使用 CDK 3.1.1+,默认情况下,JBoss A-MQ 6 镜像和模板应已安装在 openshift
命名空间中。
先决条件
- 确保 OpenShift 正常运行,并且 OpenShift 中已安装了 Fuse 镜像流。请参阅管理员入门。
- 确保为 fuse 配置 Maven 存储库,请参阅配置 Maven 存储库。
流程
准备好构建和部署快速入门:
以开发者身份登录 OpenShift。
oc login -u developer -p developer
创建一个新项目 amq-quickstart。
oc new-project amq-quickstart
确定安装的 A-MQ 6 镜像和模板的版本。
$ oc get template -n openshift
您应能够查找名为
amqXX-basic
的模板,其中XX
是 Openshift 中安装的 A-MQ 版本。
在
amq-quickstart
命名空间中部署 A-MQ 6 镜像(将XX
替换为上一步中找到的 A-MQ 的实际版本)。$ oc process openshift//amqXX-basic -p APPLICATION_NAME=broker -p MQ_USERNAME=admin -p MQ_PASSWORD=admin -p MQ_QUEUES=test -p MQ_PROTOCOL=amqp -n amq-quickstart | oc create -f -
注意如果使用旧版本的
oc
,这个oc
命令可能会失败。此语法可用于oc
版本 3.5.x (基于 Kubernetes 1.5.x)。添加发现网格端点(通过 Kubernetes REST API 代理)所需的用户角色。
$ oc policy add-role-to-user view system:serviceaccount:amq-quickstart:default
使用 Maven 工作流创建 Quickstart 项目。
$ mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \ -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-740017-redhat-00003/archetypes-catalog-2.2.0.fuse-740017-redhat-00003-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-amq-archetype \ -DarchetypeVersion=2.2.0.fuse-740017-redhat-00003
archetype 插件切换到交互模式,以提示您输入剩余的字段。
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse74-spring-boot-camel-amq Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example.fis: : [INFO] Using property: spring-boot-version = 1.5.17.RELEASE Confirm properties configuration: groupId: org.example.fis artifactId: fuse74-spring-boot-camel-amq version: 1.0-SNAPSHOT package: org.example.fis spring-boot-version: 1.5.17.RELEASE Y: :
出现提示时,为
groupId
值输入org.example.fis
,在artifactId
值中输入fuse74-spring-boot-camel-amq
。接受剩余的字段的默认值。导航到 Quickstart 目录
fuse74-spring-boot-camel-amq
。$ cd fuse74-spring-boot-camel-amq
通过设置
ACTIVEMQ_BROKER_USERNAME
和ACTIVEMQ_BROKER_PASSWORD
环境变量,自定义用于登录代理的客户端凭据。在fuse74-spring-boot-camel-amq
项目中,编辑src/main/fabric8/deployment.yml
文件,如下所示:spec: template: spec: containers: - resources: requests: cpu: "0.2" # memory: 256Mi limits: cpu: "1.0" # memory: 256Mi env: - name: AMQP_HOST value: broker-amq-amqp - name: SPRING_APPLICATION_JSON value: '{"server":{"undertow":{"io-threads":1, "worker-threads":2 }}}' - name: AMQP_USERNAME value: admin - name: AMQP_PASSWORD value: admin
运行
mvn
命令将 Quickstart 部署到 OpenShift 服务器。mvn fabric8:deploy -Popenshift
验证 Quickstart 是否已成功运行:
- 导航到 OpenShift 控制台。
- 选择项目 amq-quickstart。
- 单击 Applications。
- 选择 Pod。
- 单击 fis-spring-boot-camel-am-1-xxxxx。
点 Logs。
输出显示消息成功发送。
10:17:59.825 [Camel (camel) thread #10 - timer://order] INFO generate-order-route - Generating order order1379.xml 10:17:59.829 [Camel (camel) thread #8 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Sending order order1379.xml to the UK 10:17:59.829 [Camel (camel) thread #8 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Done processing order1379.xml 10:18:02.825 [Camel (camel) thread #10 - timer://order] INFO generate-order-route - Generating order order1380.xml 10:18:02.829 [Camel (camel) thread #7 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Sending order order1380.xml to another country 10:18:02.829 [Camel (camel) thread #7 - JmsConsumer[incomingOrders]] INFO jms-cbr-route - Done processing order1380.xml
- 要查看 Web 界面中的路由,请单击 Open Java Console 并检查 A-MQ 队列中的消息。