著名的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的内容为:
- <span style="font-size:14px;"><beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://camel.apache.org/schema/springhttp://camel.apache.org/schema/spring/camel-spring.xsd
- http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
- <camelContext id="camel"xmlns="http://camel.apache.org/schema/spring">
- <route>
- <description>Example Camel Route</description>
- <from uri="activemq:example.A"/>
- <to uri="activemq:example.B"/>
- </route>
- </camelContext>
- <bean id="activemq"class="org.apache.activemq.camel.component.ActiveMQComponent" >
- <property name="connectionFactory">
- <beanclassbeanclass="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL"value="vm://localhost?create=true"/>
- <property name="userName"value="${activemq.username}"/>
- <property name="password" value="${activemq.password}"/>
- </bean>
- </property>
- </bean>
- </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的路由如下:
- <span style="white-space:pre"> </span><route>
- <from uri="rabbitmq://localhost/t?username=guest&password=guest&exchangeType=topic&autoDelete=false&queue=t"/>
- <to uri="activemq:example.fromRMQ"/>
- </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中添加配置:
- <route>
- <from uri="activemq:test"/>
- <to uri="rabbitmq://localhost/?username=guest&password=guest&exchangeType=topic&autoDelete=false&queue=test"/>
- </route>
2. 重启ActiveMQ后,在控制台可以看到新增的队列test,
3. 往ActiveMQ的test队列发送一个消息。
4. 写个简单程序从Rabbitmq的队列test接收消息:
说明消息已经转发从ActiveMQ到RabbitMQ了。
各软件下载地址:
- 下载安装erlang:http://www.erlang.org/download.html
- 下载解压rabbitmq zip版本及java bin client zip:http://www.rabbitmq.com/download.html
- 添加控制台:http://www.rabbitmq.com/management.html
- Camel下载:http://camel.apache.org/download.html
- ActiveMQ下载:http://activemq.apache.org/download.html
http://blog.csdn.net/kimmking/article/details/24427383
相关推荐
ActiveMQ RabbitMQ AliyunMQ 示例程序
一个mq生产者和消费者源码,支持activemq和rabbitmq,支持rabbitmq 的MQTT协议和AMQP协议; 编译环境 vs2008
消息中间件kafka与activemq、rabbitmq、zeromq、rocketmq的比较
分布式通讯面试专题系列:ActiveMQ+RabbitMQ+Kafka.zip
作为消息中间件的MQ在java开发中起着举足轻重的地位,无论是ActiveMQ、RabbitMQ、还是RokcetMQ至少要会一个,否则别说自己是java程序员。Java自学网整理了目前行业最常用的消息中间件视频供大家学习。
分布式通讯面试专题系列:ActiveMQ+RabbitMQ+Kafka07
- 为什么使用消息队列? - 消息队列有什么优点和缺点? - Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
高性能架构面试题系列:Nginx+ActiveMQ+RabbitMQ+Kafka 请解释Nginx如何处理HTTP请求。 Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并...
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
经典面试学习知识
提高消息队列架构能力
Apache Camel 七大集成组件,包括activemq http jdbc jetty mail mybatis sql;耗时一个月翻译,下载后别忘记好评。。
《RabbitMQ集群环境生产实例部署》《ActiveMQ集群》《ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试》
MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。?特点:?1、支持多种语言...
activemq-camel-5.5.0.jar
NULL 博文链接:https://xkorey.iteye.com/blog/2114391
可用于调试MSMQ、RabbitMQ、ActiveMQ三种消息队列 其中MSMQ支持Active、Binary、XML格式(要勾选事务) RabbitMQ支持逐条接发、批量接发、RPC回调模式、新建队列、建立持久化队列、连接测试等功能。
camel集成spring的各种案例,如:jetty、file、activemq、ftp、http、log、并行、分支、发送邮件、接收邮件、seda队列、timer定时器、netty4、quartz2定时器、zookeeper操作,只是简单案例,方便学习, 适合入门和...