MQ
MQ英文名MessageQueue,中文名也就是大家用的消息队列,说白了就是一个消息的接受和转发的容器,可用于消息推送。
ActiveMQ介绍
ActiveMQ是Apache出品的,最流行的,能力强劲的开源消息总线,ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间任然扮演着特殊的地位;
JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。。
特点:
- 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP;
- 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务);
- 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性;
- 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上;
- 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA;
- 支持通过JDBC和journal提供高速的消息持久化;
- 从设计上保证了高性能的集群,客户端-服务器,点对点;
- 支持Ajax;
- 支持与Axis的整合;
- 可以很容易的调用内嵌JMS provider,进行测试.
其他开源JMS供应商:
jbossmq(jboss 4) jboss messaging (jboss 5) RabbitMQ joram-4.3.21 mantamq ubermq ..
环境准备
[root@localhost ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@localhost ~]# uname -r 2.6.32-431.el6.x86_64 [root@localhost ~]# uname -m x86_64
源码包版本 | 说明 |
jdk-7u65-linux-x64.gz | 此环境需要jdk版本为1.7以上; |
apache-activemq-5.14.5-bin.tar.gz |
JAVA环境部署
[root@localhost ~]# cd /soft/ # 进入源码包放置目录 [root@localhost soft]# tar xf jdk-7u65-linux-x64.gz -C /usr/local/ #解压jdk源码包到/usr/local/目录下 [root@localhost soft]# cd /usr/local/ # 切换至解压目录 [root@localhost local]# mv jdk1.7.0_65/ java/ # 给jdk更名java目录 [root@localhost local]# vim /etc/profile # 更改系统配置,全局变量; export JAVA_HOME=/usr/local/java export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:$JAVA_HOME/bin [root@localhost local]# source /etc/profile # 声明全局变量 [root@localhost local]# java -version # 查看java版本,确定安装成功. java version "1.7.0_65" Java(TM) SE Runtime Environment (build 1.7.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
解压部署ActiveMQ
[root@localhost soft]# tar xf apache-activemq-5.14.5-bin.tar.gz -C /usr/local/ # 解压acitvemq源码包 [root@localhost soft]# cd /usr/local/ # 进入解压目录 [root@localhost local]# mv apache-activemq-5.14.5/ activemq~1 # 更改activemq名称(解压后直接使用)
ActiveMQ配置文件
[root@localhost ~]# cd /usr/local/activemq~1/conf/ # activemq配置文件目录 [root@localhost conf]# ls activemq.xml credentials-enc.properties jmx.access broker.ks credentials.properties jmx.password broker-localhost.cert groups.properties log4j.properties broker.ts java.security logging.properties client.ks jetty-realm.properties login.config client.ts jetty.xml users.properties # activemq.xml 配置broker连接端口(61616);还有5672端口,若同时存在rabbitmq时,此端口需要更改. # jetty.xml 配置activemq的控制台端口(8161);在30行修改登录用户,默认为user,admin;可自行添加或修改; # jetty-realm.properties 添加上面建立的用户,修改密码;
配置broken(61616端口)
[root@localhost conf]# vim activemq.xml 113 <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumCo nnections=1000&wireFormat.maxFrameSize=104857600"/> # 默认端口为 61616;可自行修改; 114 <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnec tions=1000&wireFormat.maxFrameSize=104857600"/> # 注意此端口,若服务中心存在rabbitmq.可能会引起端口冲突; 115 <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumCon nections=1000&wireFormat.maxFrameSize=104857600"/> 116 <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnec tions=1000&wireFormat.maxFrameSize=104857600"/> 117 <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnectio ns=1000&wireFormat.maxFrameSize=104857600"/>
配置控制台端口(8161)及管理登录用户
[root@localhost conf]# vim jetty.xml 29 <property name="name" value="BASIC" /> 30 <property name="roles" value="user,admin" /> # value后面跟的是可登陆activemq的用户,可自行添加与修改,已逗号(,)隔开;登录密码在"jetty-realm.properties"文件中配置; 31 <!-- set authenticate=false to disable login --> # 确认次数为"true",说明在web登录时会开启认证;若为"flash",则不需要认证. 32 <property name="authenticate" value="true" /> -------------- 109 <property name="host" value="0.0.0.0"/> 110 <property name="port" value="8161"/> # 控制台端口(默认为8161);
密码管理配置文件
[root@localhost conf]# vim jetty-realm.properties 20 admin: admin, admin 21 user: user, user # 添加格式::: 每行管理单独的一个用户, 第一列表示"用户名";第二列表示"密码";第三列表示"角色".
Activemq管理命令
[root@localhost bin]# pwd /usr/local/activemq~1/bin [root@localhost bin]# ./activemq start|stop|restart|status