一,RabbitMQ 安装
1、安装erlang环境
cd /usr/upload
rpm -ivh esl-erlang-17.3-1.x86_64.rpm --force --nodeps(下载的配置)
rpm -ivh esl-erlang_17.3-1~centos~6_amd64.rpm --force --nodeps (下载的配置)
rpm -ivh esl-erlang-compat-R14B-1.el6.noarch.rpm --force --nodeps (下载的配置)
2、安装rabbitmq
rpm -ivh rabbitmq-server-3.4.1-1.noarch.rpm
3、启动和关闭
service rabbitmq-server start (开启)
service rabbitmq-server stop (停止)
service rabbitmq-server restart (重启)
service rabbitmq-server status (状态)
chkconfig rabbitmq-server on (开机自己启动)
4、开启rabbitmq的后台管理界面
rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart
5、创建账户
rabbitmqctl add_user admin 1111 (账号:admin 密码:1111)
rabbitmqctl set_user_tags admin administrator (设置用户角色 )
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" (设置用户权限 )
rabbitmqctl list_users (设置完成后可以查看当前用户和角色(需要开启服务) )
6、官网下载地址:Downloading and Installing RabbitMQ — RabbitMQhttp://www.rabbitmq.com/download.html
二,RabbitMQ 介绍
1、什么是mq?
mq(mesage queue):消息队列,存储消息的容器(有序切无限)用于分布式系统之间进行通信
2、什么是RibbitMQ?
rabbitmq是erlang语言编写 ,遵循AMQP协议的消息中间件
3、AMQP协议
AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP规范发布。类比HTTP
connection: (连接)
channel:(信道 ,通道)
exchange:(交换机)
queue: (队列)
routingkey:(路由键)
4、为什么要使用RebiitMQ
解耦:a服务调用b、c服务,若再添加d服务时无须修改a服务的源代码
传统模式 : 系统间耦合性太强,如图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!
中间件模式:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。
异步:列如 a服务把消息发送到mq(消息队列),b、c服务接收消息后以异步的方式运行
传统模式: 一些非必要的业务逻辑以同步的方式运行,太耗费时间
中间件模式: 将消息写入消息队列,非必要的业务逻辑以异步的方式运行(先响应数据 后台在慢慢继续发送请求),加快响应速度
削峰:按并发量慢慢拉取
传统模式:并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常
中间件模式: 系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息