一、MQ简介
MQ的全程为Message Queue,即消息队列,也称为消息中间件。是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型在分布式环境下提供应用解耦
、弹性伸缩、冗余存储、流量削峰
、异步通信
、数据同步等功能。
大致的过程是:发送者把消息发送给消息服务器,消息服务器将消息存放在队列或主题中,在合适的时候,消息服务器会将消息转发给接收者。在这个过程中,发送和接收是异步的,也就是说消息发送无需等待(提高性能),而且发送者和接收者的生命周期也没有必然关系(解耦,发送者和接收者无需同时在线),在发布(pub)和订阅(sub)模式下,也可以完成一对多的通信,即让一个消息有多个接收者。
为什么有了分布式还需要MQ呢?因为Dubbo的RPC接口或者SpringCloud的HTTP接口基本上都是同步调用,整体的服务性能遵循“木桶理论”,即整体系统的耗时取决于链路中最慢的那个接口,应用是解耦了,但是同步阻塞的问题并没有解决,MQ主要是为了解决这个问题。
MQ建立在JMS(Java Message Service,即Java消息服务)的基础上,也是一组规范化接口,落地的实现产品很多,像Kafka、RabbitMQ、RocketMQ(阿里)、ActiveMQ(apache)等,MQ中主要包括消息的发送和接收、集群和容错(高可用)、持久化、延时发送和定时投递、签收机制等。
MQ在电商系统中的应用:
二、安装
ActiveMQ是基于Java开发的,因此在安装之前需要先安装JDK,以下以Linux环境为例,JDK的安装参考:Linux下安装JDK。
安装好JDK后就可以进行ActiveMQ的安装了,当然也可以使用docker的方式安装,这里采用手动安装的方式。
1、下载安装包:http://activemq.apache.org/components/classic/download/
2、在Linux虚拟机的/opt目录下新建一个文件夹activemq
mkdir activemq
3、使用xftp等工具将安装包上传至/opt/activemq下
4、解压缩
tar -zxvf apache-activemq-5.15.9-bin.tar.gz
解压缩后在该目录下就会出现文件夹:apache-activemq-5.15.9,安装就完成了
三、启动和停止
1、启动
进入apache-activemq-5.15.9目录下的bin目录后,可以采用以下方式启动:
#普通启动
./activemq start
#启动时指定mq的日志打印地点,这时mq运行的所有日志都会打印在这个文件中
./activemq start > /logs/activemq/run_activemq.log
查看启动是否成功:activemq服务的默认端口是61616
ps -ef|grep activemq
ps -ef|grep activemq|grep -v grep
netstat -anp|grep 61616
lsof -i:61616
启动成功后可以访问:http://x.x.x.x:8161/admin, x.x.x.x是虚拟机的ip,看到以下画面即可,登录的初始用户名和密码都是admin,
Tip
:61616是ActiveMQ提供JMS服务的端口,8161是ActiveMQ管理控制台的端口
2、停止
./activemq stop