Centos下Rabbitmq安装

提纲
1、rabbitmq简介
2、下载安装erlang/otp
3、下载安装rabbitmq



1 rabbitmq简介

MQ全称为Message Queue,即消息队列。它也是一个队列,遵循FIFO原则 。
RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。
官方地址:http://www.rabbitmq.com/


1.1 RabbitMQ的使用场景

开发中消息队列通常有如下应用场景: 消峰,解耦,提速,大数据处理
消除峰值:用于高并发场景消除峰值,让并发请求在mq中进行排队
大数据处理:由于数据量太大,程序一时处理不过来,可以通过把数据放入MQ,多开几个消费者去处理消息,比如:日志收集等
服务异步/解耦 :服务之间通过RPC进行通信的方式是同步方式,服务消费方需要等到服务提供方相应结果后才可以继续执行,使用MQ之后的服务通信是异步的,服务之间没有直接的调用关系,而是通过队列进行服务通信, 应用程序解耦合 MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。
排序保证 FIFO :遵循队列先进先出的特点,可以保证数据按顺序消费

除此之外使用MQ还可以达到:提高系统响应速度,提高系统稳定性的目的。 将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。 提高了应用程序的响应时间。另外如果系统挂了也没关系,数据放到消息队列.后续可以继续消费

但是需要注意的是:对数据的一致性要求较高的业务场景不适合使用MQ,因为MQ具有一定的数据延迟


1.2 AMQP协议

AMQP是一套公开的消息队列协议,最早在2003年被提出,它旨在从协议层定义消息通信数据的标准格式,为的就是解决MQ市场上协议不统一的问题,RabbitMQ就是遵循AMQP标准协议开发的MQ服务。 官方:http://www.amqp.org


1.3 JMS是什么 ?

JMS是Java消息服务,是java提供的一套消息服务API标准,其目的是为所有的java应用程序提供统一的消息通信的标准,类似java的 jdbc,只要遵循jms标准的应用程序之间都可以进行消息通信。它和AMQP有什么 不同,jms是java语言专属的消 息服务标准,它是在api层定义标准,并且只能用于java应用;而AMQP是在协议层定义的标准,是跨语言的 。


1.4 RabbitMQ中核心概念

Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。
Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。exchange有下面四种(先了解:fanout,direct,topics,header)
Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。
Producer:消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。
Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。


1.5 RabbitMQ的工作流程

消息发布接收流程:

发送消息
1、生产者和Broker建立TCP连接。
2、生产者和Broker建立通道。
3、生产者通过通道消息发送给Broker,由Exchange将消息进行转发。
4、Exchange将消息转发到指定的Queue(队列)

消息接收消息
1、消费者和Broker建立TCP连接
2、消费者和Broker建立通道
3、消费者监听指定的Queue(队列)
4、当有消息到达Queue时Broker默认将消息推送给消费者。
5、消费者接收到消息。



2 下载安装erlang/otp

因为rabbitmq是用erlang语言写的,所以在安装rabbitmq之前必须安装兼容的erlang语言运行时。


2.1 安装零依赖的erlang rpm包

## 安装gcc等基础开发包,为了方便起见,直接安装开发工具组
yum groupinstall "Development Tools" "Development Libraries"

## 下载零依赖的erlang rpm包,注意和rabbitmq的兼容性,我这里rabbitmq是3.16.3, 兼容的erlang/otp最低是26.0.x, 最高是26.2.x,这里选择26.5.2
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5.2/erlang-26.2.5.2-1.el7.x86_64.rpm
  
## 安装 erlang 
rpm -ivh erlang-26.2.5.2-1.el7.x86_64.rpm

## 验证安装是否成功
[root@localhost ~]# which erl
/usr/bin/erl
[root@localhost ~]# 

[root@localhost ~]# erl
Erlang/OTP 26 [erts-14.2.5.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]

Eshell V14.2.5.2 (press Ctrl+G to abort, type help(). for help)
1> q()
   .
ok
2> 
[root@localhost ~]# 


2.2 源码编译安装

## 下载erlang
wget http://erlang.org/download/otp_src_21.3.tar.gz

# 解压,进入到相应的文件目录
tar -zxvf otp_src_21.3.tar.gz

# 进入到相应的目录,并进行配置,编译安装
# 源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)
#其中–prefix选项就是配置安装的路径,如果不配置该选项,安装后可执行文件默认放
#在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放
#在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。
#为了便于集中管理某个软件的各种文件,可以配置–prefix,如:
#./configure –prefix=/usr/local
#可以把所有资源文件放在/usr/local的路径中,就不会分散了。
cd otp_src_21.3/
./configure --prefix=/usr/local/erlang
make && make install

## 配置环境变量
#查看erlang的安装目录
whereis erlang
# 配置erlang环境变量 vim /etc/profile  之后需要source /etc/profile 生效
ERLANG_HOME=/usr/local/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME PATH

## 验证安装是否成功
[root@localhost ~]# which erl
/usr/bin/erl
[root@localhost ~]# erl
Erlang/OTP 26 [erts-14.2.5.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]

Eshell V14.2.5.2 (press Ctrl+G to abort, type help(). for help)
1> q()
   .
ok
2> 
[root@localhost ~]#



3 下载安装rabbitmq

## 下载
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.6/rabbitmq-server-generic-unix-3.13.6.tar.xz

## 解压
tar -xJf rabbitmq-server-generic-unix-3.13.6.tar.xz -C /usr/local/

## 配置环境变量
export PATH=/usr/local/rabbitmq_server-3.13.6/sbin:$PATH

## 启动并验证
rabbitmq-server -detached
netstat -anp|grep 5672

## 查看状态
rabbitmqctl status

## 网页插件配置,从浏览器中查看rabbitmq状态必须先开启网页插件,username:admin,password:123456 
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user username password
rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
rabbitmqctl set_user_tags username administrator

查看网页



参考资料

0 https://blog.csdn.net/Cocktail_py/article/details/89812042,很受启发

1、https://blog.csdn.net/u014494148/article/details/136557125

2、https://www.rabbitmq.com/docs/install-generic-unix,官方安装教程

3、https://www.rabbitmq.com/docs/which-erlang,rabbitmq与erlang/otp的兼容矩阵

4、https://github.com/rabbitmq/erlang-rpm/releases,zero-dependency Erlang RPM 零依赖的erlang rpm包下载地址



posted @ 2024-08-07 10:55  zhangzl419  阅读(94)  评论(0编辑  收藏  举报