第 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 命名空间中。

先决条件

流程

  1. 准备好构建和部署快速入门:

    1. 以开发者身份登录 OpenShift。

      oc login -u developer -p developer
    2. 创建一个新项目 amq-quickstart

      oc new-project amq-quickstart
    3. 确定安装的 A-MQ 6 镜像和模板的版本。

      $ oc get template -n openshift

      您应能够查找名为 amqXX-basic 的模板,其中 XX 是 Openshift 中安装的 A-MQ 版本。

  2. 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)。

  3. 添加发现网格端点(通过 Kubernetes REST API 代理)所需的用户角色。

    $ oc policy add-role-to-user view system:serviceaccount:amq-quickstart:default
  4. 使用 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
  5. 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。接受剩余的字段的默认值。

  6. 导航到 Quickstart 目录 fuse74-spring-boot-camel-amq

    $ cd fuse74-spring-boot-camel-amq
  7. 通过设置 ACTIVEMQ_BROKER_USERNAMEACTIVEMQ_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
  8. 运行 mvn 命令将 Quickstart 部署到 OpenShift 服务器。

    mvn fabric8:deploy -Popenshift
  9. 验证 Quickstart 是否已成功运行:

    1. 导航到 OpenShift 控制台。
    2. 选择项目 amq-quickstart
    3. 单击 Applications
    4. 选择 Pod
    5. 单击 fis-spring-boot-camel-am-1-xxxxx
    6. 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
  10. 要查看 Web 界面中的路由,请单击 Open Java Console 并检查 A-MQ 队列中的消息。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.