1、What is RabbitMQ?
RabbitMQ is the most widely deployed open source message broker.
RabbitMQ是部署最广泛的开源消息代理(消息中间件)。
With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers. From T-Mobile to Runtastic, RabbitMQ is used worldwide at small startups and large enterprises.
RabbitMQ拥有数万用户,是最流行的开源消息代理之一。从t-mobile到runtastic,RabbitMQ在全球的小型初创企业和大型企业中都有使用。
RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.
RabbitMQ是轻量级的,易于在本地和云中部署。它支持多种消息传递协议。RabbitMQ可以部署在分布式环境中,以满足大规模、高可用性的需求。
RabbitMQ runs on many operating systems and cloud environments, and provides a wide range of developer tools for most popular languages.
RabbitMQ运行在许多操作系统和云环境中,为大多数流行语言提供了广泛的开发工具。
Github:https://github.com/rabbitmq
RabbitMQ采用Erlang语言编写,RabbitMQ 是一种开源的实现AMQP(高级消息队列协议)的消息中间件,最初起源于金融系统,它的性能及稳定性都非常出色,AMQP协议(http://www.amqp.org),即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
消息中间件(消息队列、消息服务器)
简单来说,消息中间件就是指保存数据的一个容器(服务器),可以用于两个系统之间的数据传递。
消息中间件一般有三个主要角色:生产者、消费者、消息代理(消息队列、消息服务器);
生产者发送消息到消息服务器,然后消费者从消息代理(队列)中获取数据并进行处理;
目前比较主流的几个消息服务器:RabbitMQ、kafka、ActiveMQ、RocketMQ(阿里巴巴开源);
2、消息中间件的应用场景
1、异步处理
同步是阻塞的(会造成等待),异步是非阻塞的(不会等待);
大流量高并发请求、批量数据传递,就可以采用异步处理,提升系统吞吐量;
2、系统解耦
多个系统之间,不需要直接交互,通过消息进行业务流转;
3、流量削峰
高负载请求/任务的缓冲处理
4、日志处理
日志处理是指将消息队列用于在日志处理中,比如Kafka解决大量日志传输的问题;
5、消息通讯
消息队列一般都内置了高效的通信机制,因此也可以用于单纯的消息通讯,比如实现点对点消息队列或者聊天室等;
3、RabbitMQ运行环境
安装Erlang
1、下载安装 erlang语言运行环境,从erlang的官网下载:
Erlang官网:https://www.erlang.org/
2、安装erlang前先安装Linux依赖库:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
3、解压erlang压缩包文件:
tar -zxvf otp_src_21.2.tar.gz
4、配置,切换到解压的目录下:cd otp_src_21.2
./configure
5、编译:
make
6、安装:
make install
7、安装好了erlang后可以将解压的文件夹删除:
rm -rf otp_src_21.2
8、验证erlang是否安装成功,在命令行输入: erl 如果进入了编程命令行则表示安装成功,然后按ctrl + z 退出编程命令行;
安装RabbitMQ
1、从RabbitMQ官网https://www.rabbitmq.com找到下载链接
Linux:
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.0/rabbitmq-server-generic-unix-3.8.0.tar.xz
2、解压RabbitMQ的压缩包:
tar -xvf rabbitmq-server-generic-unix-3.8.0.tar.xz -C /usr/local/
文件解压后就可以使用了,无需再编译安装;
切换到安装目录的sbin目录下:
启动./rabbitmq-server -detached
-detached 将表示在后台启动运行rabbitmq;
rabbitmq的运行日志存放在安装目录的var目录下;
停止rabbitmq,切换到sbin目录下执行:
./rabbitmqctl shutdown
它将停止该rabbitmq的node节点,如果rabbitmq没在运行,则会报错;
启动后台web管理功能,切换到sbin目录下执行:
./rabbitmq-plugins enable rabbitmq_management --可用
./rabbitmq-plugins disable rabbitmq_management --不可用
然后通过http://192.168.10.128:15672访问默认用户guest、密码 guest,登录会提示User can only log in via localhost
增加一个用户修改一下权限,代码如下:
添加用户:./rabbitmqctl add_user admin admin
添加权限:./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
修改用户角色:./rabbitmqctl set_user_tags admin administrator