2.2. 构建 camel-jms 项目

您可以从 Fuse Software Downloads 页面下载 快速入门 信息。

将 zip 文件的内容提取到本地文件夹,例如一个名为 Quickstart 的新文件夹。

然后,您可以构建并安装 /camel/camel-jms 示例,作为 OSGi 捆绑包。此捆绑包包含 Camel 路由的蓝图 XML 定义,该路由将消息发送到 AMQ 7 JMS 队列。

在以下示例中,$FUSE_HOME 是解压缩的 Fuse 分发的位置。构建此项目:

  1. 调用 Maven 来构建项目:

    $ cd quickstarts
    
    $ mvn clean install -f camel/camel-jms/
  2. 创建 JMS 连接工厂配置,以便在 OSGi 运行时发布 javax.jms.ConnectionFactory 服务。为此,请将 快速入门/camel/camel-jms/src/main/resources/etc/org.ops4j.connectionfactory-amq7.cfg 复制到 $FUSE_HOME/etc 目录中。此配置将进行处理,以创建正常工作的连接工厂。例如:

    $ cp camel/camel-jms/src/main/resources/etc/org.ops4j.connectionfactory-amq7.cfg ../etc/
  3. 验证公布的连接工厂:

    karaf@root()> service:list javax.jms.ConnectionFactory
    [javax.jms.ConnectionFactory]
    -----------------------------
     felix.fileinstall.filename = file:$FUSE_HOME/etc/org.ops4j.connectionfactory-amq7.cfg
     name = artemis
     osgi.jndi.service.name = artemis
     password = admin
     pax.jms.managed = true
     service.bundleid = 251
     service.factoryPid = org.ops4j.connectionfactory
     service.id = 436
     service.pid = org.ops4j.connectionfactory.d6207fcc-3fe6-4dc1-a0d8-0e76ba3b89bf
     service.scope = singleton
     type = artemis
     url = tcp://localhost:61616
     user = admin
    Provided by :
     OPS4J Pax JMS Config (251)
    
    karaf@root()> jms:info -u admin -p admin artemis
    Property │ Value
    ─────────┼──────────────────────────
    product  │ ActiveMQ
    version  │ 2.4.0.amq-711002-redhat-1
    
    karaf@root()> jms:queues -u admin -p admin artemis
    JMS Queues
    ────────────────────────────────────
    df2501d1-aa52-4439-b9e4-c0840c568df1
    DLQ
    ExpiryQueue
  4. 安装捆绑包:

    karaf@root()> install -s mvn:org.jboss.fuse.quickstarts/camel-jms/7.0.0.redhat-SNAPSHOT
    Bundle ID: 256
  5. 确认它正在运行:

    karaf@root()> camel:context-list
     Context               Status              Total #       Failed #     Inflight #   Uptime
     -------               ------              -------       --------     ----------   ------
     jms-example-context   Started                   0              0              0   2 minutes
    karaf@root()> camel:route-list
     Context               Route               Status              Total #       Failed #     Inflight #   Uptime
     -------               -----               ------              -------       --------     ----------   ------
     jms-example-context   file-to-jms-route   Started                   0              0              0   2 minutes
     jms-example-context   jms-cbr-route       Started                   0              0              0   2 minutes
  6. Camel 路由启动后,您可以在 Fuse 安装中看到一个目录 work/jms/input。将您在此 Quickstart 的 src/main/data 目录中找到的文件复制到新创建的 work/jms/input 目录中。
  7. 稍等片刻,您将在 work/jms/output 目录下找到由国家组织相同的文件:

    • work/jms/output/others中,order1.xmlorder2.xmlorder4.xml
    • work/jms/output/us中的 order3.xmlorder5.xml
    • work/jms/output/fr中的 order6.xml
  8. 查看日志以查看业务日志:

    2018-05-02 17:20:47,952 | INFO  | ile://work/jms/input | file-to-jms-route                | 58 - org.apache.camel.camel-core - 2.21.0.fuse-000077 | Receiving order order1.xml
    2018-05-02 17:20:48,052 | INFO  | umer[incomingOrders] | jms-cbr-route                    | 58 - org.apache.camel.camel-core - 2.21.0.fuse-000077 | Sending order order1.xml to another country
    2018-05-02 17:20:48,053 | INFO  | umer[incomingOrders] | jms-cbr-route                    | 58 - org.apache.camel.camel-core - 2.21.0.fuse-000077 | Done processing order1.xml
  9. 查看队列是否动态创建:

    karaf@root()> jms:queues -u admin -p admin artemis
    JMS Queues
    ────────────────────────────────────
    DLQ
    17767323-937f-4bad-a403-07cd63311f4e
    ExpiryQueue
    incomingOrders
  10. 检查 Camel 路由统计信息:

    karaf@root()> camel:route-info jms-example-context file-to-jms-route
    Camel Route file-to-jms-route
    	Camel Context: jms-example-context
    	State: Started
    	State: Started
    
    
    Statistics
    	Exchanges Total: 1
    	Exchanges Completed: 1
    	Exchanges Failed: 0
    	Exchanges Inflight: 0
    	Min Processing Time: 67 ms
    	Max Processing Time: 67 ms
    	Mean Processing Time: 67 ms
    	Total Processing Time: 67 ms
    	Last Processing Time: 67 ms
    	Delta Processing Time: 67 ms
    	Start Statistics Date: 2018-05-02 17:14:17
    	Reset Statistics Date: 2018-05-02 17:14:17
    	First Exchange Date: 2018-05-02 17:20:48
    	Last Exchange Date: 2018-05-02 17:20:48