ActiveMQ

ActiveMQ

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

 

ActiveMQ特性列表

1.多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,StompREST,WS Notification,XMPP,AMQP

2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)

3.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性

4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上

5.支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

6.支持通过JDBC和journal提供高速的消息持久化

7.从设计上保证了高性能的集群,客户端-服务器,点对点

8. 支持Ajax

9.支持与Axis的整合

10.可以很容易得调用内嵌JMS provider,进行测试

 

ActiveMQ的竞争者

 

其他开源JMS供应商

jbossmq(jboss4)

jboss messaging (jboss 5)

joram-4.3.212006-09-22

openjms-0.7.7-alpha-3.zipDecember 26, 2005

mantamq

ubermq

SomnifugiJMS2005-7-27

开源的JMSProvider大部分都已经停止发展了,剩下的几个都是找到了东家,和某种J2EE 服务器挂钩,比如jboss mq与jboss,joram与jonas(objectweb组织),ActiveMQ 与Geronimo(ASFAPACHE基金组织),而在这3个之间,从网络底层来看,只有ActiveMQ使用了NIO,单从这个角度来看ActiveMQ在性能上会有一定的优势。

 

商业JMS供应商

IBMWebSphere MQ

BEA WebLogic JMS

Oracle AQ

NonStopServer for Java Message Service(JMS)

Sun JavaSystem Message Queue

Sonic jms

TIBCOEnterprise For JMS

iLinkMQ(国内)

TongLink/Q(北京东方通科技)

现在的商业J2EE应用服务器大部分都会有JMS Provider的实现,毕竟应用服务器都已经花费不薄,也不在乎在里面送一个JMS Provider了,当然还是有独立的比如IBMWebSphere MQ,Sonic JMS ,前者肯定是商用MQ(这个概念不仅仅是JMS Provier了,只能说JMS只是它提供的一个应用)中间的巨无霸了。

从这点来看,ActiveMQ明显的竞争者并不多,因为它是作为独立的开源JMSProvider出现的,很容易被用于多种结构设计中,使用ActiveMQ作为默认JMS Provider的开源项目有ServiceMix,Geronimo.

 

安装ActiveMQ

首先去http://activemq.apache.org/download.html下载最新版本4.1.0release,解压apache-activemq-4.1-incubator.zip(或者apache-activemq-4.1-incubator.tar.gz)目录如下:

+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)

-LICENSE.txt

-NOTICE.txt

-README.txt

-user-guide.html

你可以使用bin\activemq.bat(activemq)启动


 

几个小提示

1.这个仅仅是最基础的ActiveMQ的配置,很多地方都没有配置因此不要直接使用这个配置用于生产系统

2.有的时候由于端口被占用,导致ActiveMQ错误,ActiveMQ可能需要以下端口1099(JMX),61616(默认的TransportConnector)

3.如果没有物理网卡,或者MS的LoopBackAdpater Multicast会报一个错误

 

测试你的ActiveMQ

由于ActiveMQ是一个独立的jmsprovider,所以我们不需要其他任何第三方服务器就可以马上做我们的测试了.编译example目录下面的程序ProducerTool/ConsumerTool是JMS参考里面提到的典型应用,Producer产生消息,Consumer消费消息,而且这个例子还可以加入参数帮助你测试刚才启动的本地ActiveMQ或者是远程的ActiveMQ

 

ProducerToolbroker的地址,默认的是tcp://localhost:61616

[true|flase]是否使用topic,默认是false

[subject]subject的名字,默认是TOOL.DEFAULT

[durabl]是否持久化消息,默认是false

[messagecount]发送消息数量,默认是10

[messagesize]消息长度,默认是255

[clientID]durable为true的时候,需要配置clientID

[timeToLive]消息存活时间

[sleepTime]发送消息中间的休眠时间

[transacte]是否采用事务

 

ConsumerToolbroker的地址,默认的是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,一个运行:antconsumer,一个运行:ant producer,如果成功发送/接收了消息就OK了。

你可能感兴趣的:(ActiveMQ)