ActiveMQ
-陈波
Active MQ是一个基于Apcache  2.0licenced发布,开放源码的JMS产品。其特点为:
1)提供点到点消息模式和发布/订阅消息模式;
2)支持JBoss、Geronimo等开源应用服务器,支持Spring框架的消息驱动;
3)新增了一个P2P传输层,可以用于创建可靠的P2P JMS网络连接;
4)拥有消息持久化、事务、集支持等JMS基础设施服务。
activemq默认端口
Apache activemq是最受欢迎和最强大的开源消息中间件。Apache activemq是非常快速的,支持多种跨客户端语言和协议,并且还有许多先进功能。Apache activemq完全遵守JMS1.1和J2EE  1.4规范。Apache activemq是在Apache  2.0License许可下发布的。
一.ActiveMQ是什么?
ActiveMQ is the most popular and powerful open source Message
Bus.ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS 规范出台
已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
下面是它的特性列表
1.多种语言和协议编写客户端。语言:Java,C,C++,C#,Ruby,Perl,Python,PHP。
应用协议:OpenWire,Stomp REST,WS Notification,XMPP,AMQP
2.完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)
3.对Spring的支持,ActiveMQ可以很容得内嵌到使用Spring的系统里面去,而且也支持
Spring2.0的特性
4.通过了常见J2EE服务器(如Geronimo,JBoss4,GlassFish,WebLogic)的测试,其
中通过JCA1.5resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE1.4商业服务器上
5.支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
6.支持通过JDBC和journal提供高速的消息持久化
7.从设计上保证了高性能的集,客户端-服务器,点对点
8.支持Ajax
9.支持与Axis的整合
10.可以很容易得调用内嵌JMS provider,进行测试
二.ActiveMQ的竞争者
1,其他开源JMS provider(资料来自java-source):
jbossmq(jboss4)
jboss messaging(jboss5)
joram-4.3.212006-09-22
openjms-0.7.7-alpha-3.zip December26,2005
mantamq
ubermq
SomnifugiJMS2005-7-27
开源的JMS Provider大部分都已经停止发展了,剩下的几个都是到了东家,和某种J2EE 服务器挂钩,比如jboss mq与jboss,joram与jonas(objectweb组织),ActiveMQ与Geronimo(ASF APACHE基金组织),而在这3个之间,从网络底层来看,只有ActiveMQ使用了NIO,单从这个角度来看ActiveMQ在性能上会有一定的优势。
2.商业JMS provider
IBM WebSphere MQ
BEA WebLogic JMS
Oracle AQ
NonStop Server for Java Message Service(JMS)
Sun Java System Message Queue
Sonic jms
TIBCO Enterprise For JMS
iLinkMQ(国内)
现在的商业J2EE应用服务器大部分都会有JMS Provider的实现,毕竟应用服务器都已经花费不薄,也不在乎在里面送一个JMS Provider了,当然还是有独立的比如IBM WebSphere MQ,Sonic JMS,前者肯定是商用MQ(这个概念不仅仅是JMS Provier了,只能说JMS只是它提供的一个应用)中间的巨无霸了。
从这点来看,ActiveMQ明显的竞争者并不多,因为它是作为独立的开源JMS Provider出现的,很容易被用于多种结构设计中,使用ActiveMQ作为默认JMS Provider的开源项目有ServiceMix,Geronimo.
三.安装ActiveMQ
首先去/download.html下载最新版本4.1.0release,解压apache-activemq-4.1-incubator.zip(或者apache-activemq-4.1-
)目录如下:
+bin(windows下面的bat和unix/linux下面的sh)
+conf(activeMQ配置目录,包含最基本的activeMQ配置文件)
+data(默认是空的)
+docs(index,replease版本里面没有文档,-.-b不知道为啥不带)
+example(几个例子
+lib(activemMQ使用到的lib)
-apache-activemq-4.1-incubator.jar(ActiveMQ的binary)
-
-
-
-user-guide.html
你可以使用bin\activemq.bat(activemq)启动,如果一切顺利,你就会看见类似下面的信息:
几个小提示
1.这个仅仅是最基础的ActiveMQ的配置,很多地方都没有配置因此不要直接使用这个配置用于生产系统
2.有的时候由于端口被占用,导致ActiveMQ错误,ActiveMQ可能需要以下端口
1099(JMX),61616(默认的TransportConnector)
3.如果没有物理网卡,或者MS的LoopBackAdpater Multicast会报一个错误
四.测试你的ActiveMQ
首先安装ant,在环境变量中path中配置D:\Java\apache-ant-1.7.0\bin
由于ActiveMQ是一个独立的jms provider,所以我们不需要其他任何第三方服务器就可以马上做我们的测试了.编译example目录下面的程序ProducerTool/ConsumerTool是JMS参考里面提到的典型应用,Producer产生消息,Consumer消费消息,而且这个例子还可以加入参数帮助你测试刚才启动的本地ActiveMQ或者是远程的ActiveMQ
ProducerTool[url]broker的地址,默认的是tcp://localhost:61616
[true|flase]是否使用topic,默认是false
[subject]subject的名字,默认是TOOL.DEFAULT
[durabl]是否持久化消息,默认是false
[messagecount]发送消息数量,默认是10
[messagesize]消息长度,默认是255
[clientID]durable为true的时候,需要配置clientID
[timeToLive]消息存活时间
[sleepTime]发送消息中间的休眠时间
[transacte]是否采用事务
ConsumerTool[url]broker的地址,默认的是tcp://localhost:61616
[true|flase]是否使用topic,默认是false
[subject]subject的名字,默认是TOOL.DEFAULT
[durabl]是否持久化消息,默认是false
[maxiumMessages]接受最大消息数量,0表示不限制
[clientID]durable为true的时候,需要配置clientID
[transacte]是否采用事务
[sleepTime]接受消息中间的休眠时间,默认是0,onMeesage方法不休眠
[receiveTimeOut]接受超时
我们可以这样使用:
先启动activeMQ,再打开两个命令窗口,都进入D:\activemq\example,一个运行:ant consumer,一个运行:ant producer,如果成功发送/接收了消息就OK了。
安装好ActiveMQ后,肯定第一个想法就是把这个JMS Provider跑起来,然后运行它自带的例子代码来验证其是否安装成功,通过阅读其上的文档,实验如下:
1)先将ActiveMQ跑起来,运行出一个JMS的代理,它负责消息的接收和发送,就是执行bin 目录下的activemq批处理命令。
2)打开两个cmd窗口,都定位到example目录下,第一个运行ant consumer,第二个运行ant producer,就可以看到如下的信息被生产和消费,核心就是l。结果如下图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。