`
m635674608
  • 浏览: 5058480 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ActiveMQ与RabbitMQ使用camel集成

 
阅读更多

   著名的EIP实现框架Camel最早起源于ActiveMQ内的一些基于消息的集成需求,然后逐渐发展成为一个ActiveMQ的子项目,最后这一块的功能越来越完善,就成为了Apache的顶级项目。

         所以,从一开始到现在,ActiveMQ与Camel这两个项目一直都是紧密联系的,可以非常方便的整合使用:比如在ActiveMQ的配置文件中直接按照Spring的配置方式使用Camel来实现ActiveMQ与其他外部系统或中间件的集成。而ActiveMQ中的一些简单的集成功能也越来越倾向于直接去掉或者移植到Camel环境中去实现。

环境:ActiveMQ 5.9.0、RabbitMQ3.3.0、

一、ActiveMQ与ActiveMQ的集成

实现一个简单的从一个Queue到另一个Queue的消息转发。

1.        在activemq.xml中加一句:<import resource="camel.xml"/>

2.        加一个简单路由,从队列example.A转发消息到队列example.B,camel.xml的内容为:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:14px;"><beans  
  2.   xmlns="http://www.springframework.org/schema/beans"   
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.   xsi:schemaLocation="  
  5.     http://camel.apache.org/schema/springhttp://camel.apache.org/schema/spring/camel-spring.xsd  
  6.     http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">  
  7.    
  8.    <camelContext id="camel"xmlns="http://camel.apache.org/schema/spring">  
  9.        <route>  
  10.            <description>Example Camel Route</description>  
  11.            <from uri="activemq:example.A"/>  
  12.            <to uri="activemq:example.B"/>  
  13.        </route>  
  14.    </camelContext>  
  15.    
  16.    <bean id="activemq"class="org.apache.activemq.camel.component.ActiveMQComponent" >  
  17.        <property name="connectionFactory">  
  18.          <beanclassbeanclass="org.apache.activemq.ActiveMQConnectionFactory">  
  19.            <property name="brokerURL"value="vm://localhost?create=true"/>  
  20.            <property name="userName"value="${activemq.username}"/>  
  21.            <property name="password" value="${activemq.password}"/>  
  22.          </bean>  
  23.        </property>  
  24.    </bean>  
  25. </beans></span>  


 3.        启动ActiveMQ后,浏览器输入http://localhost:8161/admin/queues.jsp,可以看到自动创建了一个队列example.A,并且加了一个消费者。

 

 

4.        点击Send To,发送一个消息到example.A,刷新页面,可以看到消息已经被转发:

  

二、ActiveMQ与RabbitMQ集成

详细的配置参数:http://camel.apache.org/rabbitmq.html

Ø  从RabbitMQ路由消息到ActiveMQ

1.        Camel里添加AMQP的路由如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <span style="white-space:pre">  </span><route>  
  2.            <from uri="rabbitmq://localhost/t?username=guest&password=guest&exchangeType=topic&autoDelete=false&queue=t"/>  
  3.            <to uri="activemq:example.fromRMQ"/>  
  4.        </route>  

 

2.        复制camel中的camel-rabbitmq-2.13.0.jar 和rabbitmq-java-client中的rabbitmq-client.jar到apache-activemq-5.9.0\lib\camel下。

3.        重启ActiveMQ,在rabbitmq的控制台可以看到自动创建的exchange为t,

 

4.        在rabbitmq控制台向t中发送消息,

 

5.        刷新ActiveMQ控制台可以看到消息已经从rabbitmq路由到activemq:

 

Ø  从ActiveMQ路由消息到Rabbitmq

1.        在camel.xml中添加配置:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <route>  
  2.     <from uri="activemq:test"/>  
  3.     <to uri="rabbitmq://localhost/?username=guest&password=guest&exchangeType=topic&autoDelete=false&queue=test"/>  
  4. </route>  

2.        重启ActiveMQ后,在控制台可以看到新增的队列test,

 

3.        往ActiveMQ的test队列发送一个消息。

4.        写个简单程序从Rabbitmq的队列test接收消息:

说明消息已经转发从ActiveMQ到RabbitMQ了。

各软件下载地址:

 

  1. 下载安装erlang:http://www.erlang.org/download.html
  2. 下载解压rabbitmq zip版本及java bin client zip:http://www.rabbitmq.com/download.html
  3. 添加控制台:http://www.rabbitmq.com/management.html
  4. Camel下载:http://camel.apache.org/download.html
  5. ActiveMQ下载:http://activemq.apache.org/download.html

 

 http://blog.csdn.net/kimmking/article/details/24427383

分享到:
评论

相关推荐

    亲测好用——Apache Camel简介以及使用场景.pptx.zip

    - **消息队列集成**:与消息中间件如 ActiveMQ 或 RabbitMQ 集成,实现异步通信。 - **Web服务**:通过 HTTP 组件,Camel 可以调用或提供 RESTful Web 服务。 - **数据库交互**:使用 JDBC 组件执行 SQL 查询或...

    ApacheCamel快速入门(上)

    在这个专题中,我们介绍了相当数量技术组件:Flume、Kafka、ActiveMQ、Rabbitmq、Zookeeper、Thrift、Netty、DUBBO等等,还包括本文要进行介绍的ApacheCamel。有的技术组件讲得比较深入,有的技术组件则是点到为止。...

    Camel in Action

    Camel支持多种消息队列,包括ActiveMQ、RabbitMQ等。通过这些消息队列,Camel能够实现异步通信和可靠的消息传递。例如,在一个典型的生产者-消费者模型中,生产者将消息发送到消息队列,而消费者则从队列中接收并...

    apache_camel_tutorial

    - Camel 支持与各种消息队列(如 ActiveMQ、RabbitMQ 等)集成。 - 这种集成使得开发者能够轻松地构建分布式系统。 **2. 消息队列的使用场景**: - **异步处理**:消息队列通常用于实现异步处理,从而提高系统的...

    99-Apache Camel简介以及使用场景.pptx

    - **消息汇聚**:将来自不同消息源的数据合并成一个统一的格式,例如将来自 ActiveMQ、RabbitMQ 或 WebService 的数据整合成一份报表。 - **消息分发**:将消息从一个生产者转发给多个消费者,支持顺序分发或并行...

    apache-camel-2.9.4.zip

    1. JMS(Java消息服务):Camel支持多种JMS提供者,如ActiveMQ、RabbitMQ等,方便消息传递和队列管理。 2. HTTP/HTTPS:通过HTTP或HTTPS协议与其他系统进行通信,支持RESTful API设计。 3. FTP/SFTP:用于文件传输,...

    apache-camel-2.10.0.tar.gz

    4. **Spring集成**:2.10.0版本可能已经与Spring框架深度融合,方便在Spring应用中使用Camel。 5. **组件增强**:可能增加了新的组件或改进了现有组件的功能,以增强其灵活性和适应性。 6. **性能优化**:每次版本...

    apache-camel-2.3.0.zip

    5. **Spring集成**:由于Apache Camel与Spring框架的良好集成,开发者可以轻松地在Spring应用中使用Camel,利用Spring的依赖注入和配置能力。 6. **测试工具**:Camel提供了专门的测试框架,如`camel-test`和`camel...

    tech1-temple-java:Java概念证明存储库

    Apache Camel — ActiveMQ / RabbitMQ,TCP / HTTP,IMAP / POP3 / SMTP,计时器,ElasticSearch,Spring集成 身份验证和安全性-类型,授权,最佳做法 密码学-编码,加密,散列,混淆算法框架,用法,最佳实践 ...

    Guide to Enterprise Integration

    企业集成中常见的消息队列包括ActiveMQ、RabbitMQ、Kafka等。 5. 集成框架和套件:集成框架和套件提供了实现集成所需的基础架构和工具。它们通常包含了用于数据转换、路由、适配器模式、协议转换等功能的组件。Java...

    JMS消息发送及订阅

    **Apache Camel与JMS** Apache Camel 是一个流行的轻量级集成框架,它简化了包括JMS在内的多种技术的集成。在Camel中,我们可以使用`from()`和`to()`方法定义消息路由。例如,以下配置将读取一个文件并将其内容作为...

    software-application-integration:实现一些用于集成软件的设计模式

    2. **消息队列(Message Queue)**:MQ是异步集成的重要工具,例如Apache ActiveMQ和RabbitMQ。通过消息队列,应用可以将消息发送到队列,而其他应用可以在需要时接收和处理,降低了系统间的耦合度。 3. **企业服务...

    java分布式应用总结.pdf

    开源框架如Apache ActiveMQ、RabbitMQ等提供了高效的消息队列服务,允许系统解耦并异步处理任务。 - **基于远程调用**:Java RMI、Hessian、 Burlap、Web服务(SOAP/RESTful)等可以实现跨网络的函数调用。开源框架...

    骆驼样本

    示例可能会覆盖多种组件的使用,如AMQP(RabbitMQ或ActiveMQ)、JDBC(数据库连接)、SFTP(安全文件传输)等。 3. **数据转换与处理**: Camel提供了一些工具,如Simple Expression Language和BeanIO,用于在路由...

    开源项目研究与应用小结.pdf

    - **优点**:支持JMS 1.1,能够与Apache Camel整合,支持Web服务。 - **缺点**:重量级,适用于整体部署,特性需求切割困难。 ##### 2. Apache Qpid - **优点**:遵循高级消息队列协议(AMQP),提供C++/JAVA版本...

    整合

    6. **消息队列**:RabbitMQ、ActiveMQ或Kafka等消息中间件用于异步处理和解耦,促进不同组件间的通信。 7. **持续集成/持续部署(CI/CD)**:Jenkins、GitLab CI/CD等工具确保代码的自动化测试和部署,整合开发流程...

Global site tag (gtag.js) - Google Analytics