文章目录
- 1.ActiveMQ消息队列中间件
- 1.1.什么是ActiveMQ
- 1.2.ActiveMQ支持的消息传递类型
- 2.部署ActiveMQ消息队列
- 2.1.安装JDK环境
- 2.2.部署ActiveMQ消息队列
- 2.3.启动ActiveMQ消息队列
- 2.4.ActiveMQ的端口号
- 2.5.使用ActiveMQ的后台管理系统
ActiveMQ官网:https://activemq.apache.org/
1.ActiveMQ消息队列中间件
1.1.什么是ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
ActiveMQ的特点:
- 支持来自Java,C,C ++,C#,Ruby,Perl,Python,PHP的各种跨语言客户端和协议。
- 完全支持JMS客户端和Message Broker中的企业集成模式。
- 支持许多高级功能,如消息组,虚拟目标,通配符和复合目标。
- 完全支持JMS 1.1和J2EE 1.4,支持瞬态,持久,事务和XA消息。
- Spring支持,以便ActiveMQ可以轻松嵌入到Spring应用程序中,并使用Spring的XML配置机制进行配置。
- 专为高性能集群,客户端 - 服务器,基于对等的通信而设计。
- CXF和Axis支持,以便ActiveMQ可以轻松地放入这些Web服务堆栈中以提供可靠的消息传递。
- 可以用作内存JMS提供程序,非常适合单元测试JMS。
- 支持可插拔传输协议,例如in-VM,TCP,SSL,NIO,UDP,多播,JGroups和JXTA传输。
- 使用JDBC和高性能日志支持非常快速的持久性。
1.2.ActiveMQ支持的消息传递类型
ACtiveMQ支持的消息传递类型有点对点传递、发布/订阅模型
1)点对点传递类型
点对点传递是指:消息发送方(生产者)将数据存储在ActiveMQ的Queue队列中,队列中的消息数据会被消费者进行消费,也就是读取,然后进行业务处理,消费者读取完成数据后会向MQ发送一个确认消费的信息给队列,队列知道数据被消费后就会从队列中将该条数据删除。
点对点传递的特点:
- 每条消息数据同一时间内只允许存在一个消费者,数据一旦被消费,将不会存在在消息队列中。
- 生产者和消费者之间在时间上没有依赖性,谁先启动都可以,生产者可以先发送数据到队列,消费者进行读取消费,消费者也可以先启动等待生产者产生数据。
- 消费者在成功接收到消息之后需要向队列应答成功
2)发布/订阅传递类型
发布/订阅模式下包含三个角色:主题(Topic)、发布者(Publisher)、订阅者(Subscriber),发布者就相当于生产者,订阅者相当于消费者。
发布/订阅模式中,订阅者要先发起Topic的订阅,等待发布者向Topic中写入数据,然后进行订阅消费,只有对Topic有管理的订阅者才可以接收到由发布者产生的数据。
Topic实现发布和订阅功能,多个订阅者可以同时发起一个Topic,当发布消息进入Topic时,所有订阅这个Topic的订阅者都能得到这个消息,类似于一对多。
发布/订阅模型的特点:
- 每个Topic可以有多个订阅者,同时消费数据。
- 发布者和订阅者之间有时间上的依赖性,先定义Topic,再发送消息数据。
- 订阅者必须保持运行状态才能收到发布者的消息数据。
2.部署ActiveMQ消息队列
2.1.安装JDK环境
1.解压jdk源码包
[root@activemq ~]# tar xf jdk1.8.tar.gz -C /usr/local/
2.设置环境变量
[root@activemq ~]# vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_131/
PATH=$JAVA_HOME/bin:$PATH
3.重载配置
[root@activemq ~]# source /etc/profile
4.查看jdk的版本
[root@activemq ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2.2.部署ActiveMQ消息队列
1.下载ActiveMQ二进制文件
[root@activemq ~]# wget https://www.apache.org/dyn/closer.cgi?filename=/activemq/5.16.4/apache-activemq-5.16.4-bin.zip&action=download
2.部署ActiveMQ
[root@activemq ~]# mkdir /data
[root@activemq ~]# tar xf apache-activemq-5.16.4-bin.tar.gz -C /data/
[root@activemq ~]# mv /data/apache-activemq-5.16.4 /data/activemq
3.配置ActiveMQ后台管理服务的IP地址
[root@activemq ~]# vim /data/activemq/conf/jetty.xml
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/> #119行,将127修改成4个0
<property name="port" value="8161"/>
</bean>
2.3.启动ActiveMQ消息队列
1.启动ActiveMQ
[root@activemq ~]# cd /data/activemq
[root@activemq activemq]# ./bin/activemq start
INFO: Loading '/data/activemq//bin/env'
INFO: Using java '/usr/local/jdk1.8.0_131/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/data/activemq//data/activemq.pid' (pid '72746')
2.查看ActiveMQ的状态
[root@activemq activemq]# ./bin/activemq status
INFO: Loading '/data/activemq//bin/env'
INFO: Using java '/usr/local/jdk1.8.0_131/bin/java'
ActiveMQ is running (pid '72746')
3.查看ActiveMQ的进程
[root@activemq activemq]# ps aux | grep activemq
root 72746 4.8 5.8 3097116 109052 pts/0 Sl 20:18 0:03 /usr/local/jdk1.8.0_131/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/data/activemq//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/data/activemq//tmp -Dactivemq.classpath=/data/activemq//conf:/data/activemq//../lib/: -Dactivemq.home=/data/activemq/ -Dactivemq.base=/data/activemq/ -Dactivemq.conf=/data/activemq//conf -Dactivemq.data=/data/activemq//data -jar /data/activemq//bin/activemq.jar start
4.关闭和重启ActiveMQ
[root@activemq activemq]# ./bin/activemq stop
[root@activemq activemq]# ./bin/activemq restart
5.查看ActiveMQ的日志
[root@activemq ~]#tail -f /data/activemq/data/activemq.log
2.4.ActiveMQ的端口号
[root@activemq ~]# netstat -lnpt | grep java tcp6 0 0 :::5672 :::* LISTEN 75005/java tcp6 0 0 :::61613 :::* LISTEN 75005/java tcp6 0 0 :::61614 :::* LISTEN 75005/java tcp6 0 0 :::61616 :::* LISTEN 75005/java tcp6 0 0 :::1883 :::* LISTEN 75005/java tcp6 0 0 :::8161 :::* LISTEN 75005/java tcp6 0 0 :::46562 :::* LISTEN 75005/java
ActiveMQ有很多个端口,其中最为主要的就是8161和61616端口。
8161端口:ActiveMQ的后端管理系统使用的端口,可以在浏览器中访问此端口进入后端管理页面。
6161端口:TCP协议端口,用于JAVA程序调用。
2.5.使用ActiveMQ的后台管理系统
1)登陆后台管理系统
ActiveMQ5.6版本之后访问后台管理系统需要先登陆,默认账号密码为admin。
2)后台管理系统页面
点击图中的Manage ActiveMQ broker进入ActiveMQ的管理页面。
3)主要关注Queues和Topic两个界面