1.什么是MQ
- 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。
其主要用途:不同进程Process/线程Thread之间通信。 - 不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;
- 不同进程(process)之间传递消息时,为了实现标准化,将消息的格式规范化了,并且,某一个进程接受的消息太多,一下子无法处理完,并且也有先后顺序,必须对收到的消息进行排队,因此诞生了事实上的消息队列;
2.AMQP高级消息队列协议
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
3.RabbitMQ简介
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写(Erlang – 面向并发的编程语言),支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
4.安装RabbitMQ
step1 安装依赖
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel
yum install make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
step2 下载安装包(通过rpm包安装后所有环境变量都会配置完成)
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
step3 顺序安装RabbitMQ
step4 修改用户名密码
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
找到loopback_users 中的 <<"guest">>,只保留guest;
step5 启动RabbitMQ并查看是否成功 rabbitmq-server start &
step6 启动控制台插件 rabbitmq-plugins enable rabbitmq_management
step7 访问控制台
注意:出现ERROR: epmd error for host 192: badarg (unknown POSIX error)
创建:vim /etc/rabbitmq/rabbitmq-env.conf
添加:NODENAME=rabbit@localhost