RabbitMQ简介
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。目前很多互联网大厂都在使用RabbitMQ。
官网:http://www.rabbitmq.com/
rabbitmq特性
- RabbitMQ底层采用Erlang语言进行编写
- 开源、性能优秀,稳定性保障
- 与SpringAMQP完美的整合、API丰富
- 集群模式丰富,表达式配置,HA模式,镜像队列模型
- 保证数据不丢失的前提做到高可靠性、可用性
AMQP协议
AMQP全称:Advanced Message Queuing Protocol
,即高级消息队列协议
是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
AMQP协议模型
Publisher application
就是生产者应用服务,它把生产的消息发送到Server端,这个Server可以认为是RabbitMQ节点,消息首先会经过指定的Virtual host
(虚拟主机),然后到达Exchange
(交换机)。Exchange
和Message Queue
(消息队列)是有一个绑定关系的,Exchange
会根据一定的规则转发消息到绑定的队列上。
Consumer application
就是消费者应用服务,它只需要去监听Message Queue
,有消息就取出来消费就好了。
RabbitMQ安装
安装环境
rabbitmq下载
rabbitmq下载地址:http://www.rabbitmq.com/releases/rabbitmq-server/
erlang下载地址:http://www.rabbitmq.com/releases/erlang/
socat下载地址:http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
这里简单说一下,首先rabbitmq是使用erlang语言编写的,所以需要先安装erlang,其次rabbitmq安装依赖于socat,所以三个安装包都需要下载。另外rabbitmq对于erlang的版本是有要求的,这个可以去官网查看。
# 在linux下直接执行命令命令
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
安装步骤
# 安装基础依赖
yum -y install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
# 安装rpm包,一定要按顺序安装
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
修改配置
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
这是rabbitmq的核心配置文件,在这里可以查看到rabbitmq默认监听的端口号是5672。找到loopback_users
的配置项,去除guest
的尖括号和双引号,然后保存退出。
RabbitMQ命令
服务的启动:rabbitmq-server start &
服务的停止:rabbitmqctl stop
查看进程:lsof -i:5672
管理插件:rabbitmq-plugins enable rabbitmq-management
RabbitMQ管控台
执行命令 rabbitmq-plugins enable rabbitmq_management
就可以启用管控台。
默认启用端口是15672,通过ip+端口进行访问如:http://192.168.0.102:15672/
最好先关闭下iptables规则:iptables -F && iptables -t nat -F
访问成功后需要输入用户名和密码进行登录,统一输入guest
即可。登录成功后界面如图所示
命令行与管控台
管控台可以查看到rabblitmq服务的整体运行情况,也可以进行很多相关的操作,这些操作其实都可以使用命令行来完成。
而且命令行提供的功能更加强大,所以更推荐的使用方式是通过命令行执行操作,通过管控台对照查看结果。下面仅列出部分常用的命令