为什么需要学习MQ?
举个例子:
学生请教老师问题,很多人需要排队,老师教一个学生需要5分钟,只有教完这一个学生才能继续下一个。这就会导致后面排队的学生一直在等待,对后面排队的学生特别不友好。
那么怎么解决?
老师给班长发布命令,让班长先让后面的排队的同学按约定把自己的问题都写上去。学生交给班长之后,就可以走了,不用排队!老师可以在任何时间,再去解决问题。那么班长就类似于消息中间件!
那么类比到项目中,这种方法解决了哪些问题?
- 解决了耦合调用的作用。(解耦)
- 异步模型(异步)
- 抵御洪峰流量,保护主业务,削峰。(削峰)
ActiveMQ下载与安装
下载
官网:http://activemq.apache.org/
点击首页的下载后,我们就跳转到下载ActiveMQ页面,选择列表中的第二个,这里我们下载linux版本就可以。
安装
1、将下载好的安装包使用xftp传输到linux下的/opt目录下。
2、打开xsheel,对压缩包进行解压。
tar -zxvf apache-activemq-5.15.12-bin.tar.gz
3、打开/root/apache-activemq-5.15.12/bin目录下,进行启动
./activemq start
#对应的关闭重启分别是
./activemq stop
./activemq restart
4、可以根据以下命令查看是否启动
[root@iZ2zeeqh1fctjw2bhzgjnaZ bin]# ps -ef|grep activemq|grep -v grep
#可以看到进程号是11828,已经启动了
root 11828 1 1 16:37 pts/1 00:00:08 /usr/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/root/apache-activemq-5.15.12//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/root/apache-activemq-5.15.12//tmp -Dactivemq.classpath=/root/apache-activemq-5.15.12//conf:/root/apache-activemq-5.15.12//../lib/: -Dactivemq.home=/root/apache-activemq-5.15.12/ -Dactivemq.base=/root/apache-activemq-5.15.12/ -Dactivemq.conf=/root/apache-activemq-5.15.12//conf -Dactivemq.data=/root/apache-activemq-5.15.12//data -jar /root/apache-activemq-5.15.12//bin/activemq.jar start
5、Activemq的默认端口号是:61616
我们可以通过查看端口号是否被占有发现是否启动:
netstat -anp|grep 61616
6、带日志的启动方法
#先在mq的根目录创建一个mq.log文件
#然后再回bin目录下进行带日志启动
./activemq start > /root/apache-activemq-5.15.12/mq.log
我们启动后不带有任何信息,是因为这些信息作为日志写进了mq.log的文件中。
启动的两个端口:
后台:61616
前台(类似于tomcat的小猫):8161
注意:如果使用了阿里云,需要打开阿里云的安全组8161端口号。