一、特性及优势
1 、实现 JMS1.1 规范,支持 J2EE1.4 以上
2 、可运行于任何 jvm 和大部分 web 容器( ActiveMQ works great in any JVM )
3 、支持多种语言客户端( java, C, C++, AJAX, ACTIONSCRIPT 等等)
4 、支持多种协议( stomp , openwire , REST )
5 、良好的 spring 支持( ActiveMQ has great Spring Support )
6 、速度很快, JBossMQ 的十倍( ActiveMQ is very fast; often 10x faster than JBossMQ. )
7 、与 OpenJMS 、 JbossMQ 等开源 jms provider 相比, ActiveMQ 有 Apache 的支持,持续发展的优势明显。
二、下载部署
1 、下载
http://activemq .apache.org/activemq -510-release.html ,下载 5.1.0 Windows Distribution 版本
2 、安装
直接解压至任意目录(如: d:/ apache-activemq -5.1.0 )
3 、启动 ActiveMQ 服务器
方法 1 :
直接运行 bin/activemq .bat
方法 2 (在 JVM 中嵌套启动):
cd example
ant embedBroker
4、ActiveMQ 消息管理后台系统:
http://localhost:8161/admin
三、运行附带的示例程序
1 、 Queue 消息示例:
* 启动 Queue 消息消费者
cd example
ant consumer
* 启动 Queue 消息生产者
cd example
ant producer
简要说明:生产者( producer )发消息,消费者( consumer )接消息,发送 / 接收 2000 个消息后自动关闭
2 、 Topic 消息示例:
* 启动 Topic 消息消费者
cd example
ant topic-listener
* 启动 Topic 消息生产者
cd example
ant topic-publisher
简要说明:重复 10 轮, publisher 每轮发送 2000 个消息,并等待获取 listener 的处理结果报告,然后进入下一轮发送,最后统计全局发送时间。
四、 Queue 与 Topic 的比较
1 、 JMS Queue 执行 load balancer 语义:
一条消息仅能被一个 consumer 收到。如果在 message 发送的时候没有可用的 consumer ,那么它将被保存一直到能处理该 message 的 consumer 可用。如果一个 consumer 收到一条 message 后却不响应它,那么这条消息将被转到另一个 consumer 那儿。一个 Queue 可以有很多 consumer ,并且在多个可用的 consumer 中负载均衡。
2 、 Topic 实现 publish 和 subscribe 语义:
一条消息被 publish 时,它将发到所有感兴趣的订阅者,所以零到多个 subscriber 将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的 subscriber 能够获得消息的一个拷贝。
3 、分别对应两种消息模式:
Point-to-Point ( 点对点 ),Publisher/Subscriber Model ( 发布 / 订阅者 )
其中在 Publicher/Subscriber 模式下又有 Nondurable subscription (非持久订阅)和 durable subscription ( 持久化订阅 )2 种消息处理方式。
http://jinguo.javaeye.com/blog/233124