1、MQ是什么
MQ:Message Queue :消息队列
队列:是就是一种数据结构 ,先进先出。在Redis中, List(lpush + rpop)操作就类似于队列的操作
消息队列:简单的说就是用来进行消息传输的队列。
消息中间件:简单的说就是用来传输消息的中间载体,就是将你的信息发送到接受方,它并不关心发送的数据是什么。
生活中的例子
你要给远方的朋友寄一封信 ——》 把信放到邮箱,邮局帮你送信 ——》 邮局将信送到你朋友那里
这里“你”就表示一个生产者(发送信息),“邮局”就是一个消息中间件(传输信息),“朋友”就是消费者(接收消息)。
邮局中有很多需要处理的消息,会按照你投放的顺序进行处理,类似于消息队列。
2、MQ在开发中的作用
2.1、流量消峰(解决高并发)
2.2、模块之间的异步通信
3、消息队列的中间件有哪些
ActiveMQ ------- JMS(SUN公司提供的规范) Java message Server
RocketMQ ------- 由阿里开发
kafka -------------- 最初的设计,是用来完成分布式下日志的收集框架,后来转换成消息队列
RabbitMQ -------- 目前国内使用较为广泛的一个
4、RabbitMQ简介
发展历史
Rabbit科技有限公司开发了RabbitMQ,并提供对其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合资企业,2010年4月被VMware旗下的SpringSource收购。RabbitMQ在2013年5月成为GoPivotal的一部分 。
基本概念
RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
主要特性
可伸缩性:集群服务
消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存
运转流程
5、RabbitMQ的安装
# 安装RabbitMQ需要的环境
yum install epel-release
yum install erlang
# 安装rabbitMQ
# 下载rpm文件
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
# 下载完成需要安装
yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm
# 设置开机启动
systemctl enable rabbitmq-server.service
# 启动这个服务
systemctl start rabbitmq-server.service
# 查看服务的状态
systemctl status rabbitmq-server.service
# 停止这个服务
systemctl stop rabbitmq-server.service
# 查看当前所有的用户
rabbitmqctl list_users
# 查看 guest 用户所有拥有的权限
rabbitmqctl list_user_permissions guest
# 删除原来的guest用户
rabbitmqctl delete_user guest
# 添加一个新的用户(kongming, 密码:123456)
rabbitmqctl add_user kongming 123456
# 给 kongming 设置个角色(tag)
rabbitmqctl set_user_tags kongming administrator
# 给 kongming 赋予权限
rabbitmqctl set_permissions -p / kongming ".*" ".*" ".*"
# 查看 kongming 用户所拥有的权限
rabbitmqctl list_user_permissions kongming
# 开启web的管理端
rabbitmq-plugins enable rabbitmq_management
# 查看端口是否开启
netstat -apn|grep 5672
# 然后在网页访问: http://你服务器的ip:15672
# 输入 kongming 123456 即可登录到RabbitMQ的主页