RabbitMQ及web界面安装配置

发布于:2024-04-18 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、RabbitMQ介绍

1、什么是MQ

MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。

2、MQ的优缺点

优点:

        异步通信:消息队列允许多个处理程序并行处理消息,这可以减轻应用程序的负载,提高系统的吞吐量。
        可靠性:消息队列通常支持事务性操作,这有助于确保消息的可靠传递,以及在失败时能够进行重试。
        解耦:消息队列可以用于将应用程序的不同部分解耦,使它们能够以松散或独立的方式进行通信。
        可扩展性:MQ支持在分布式系统中进行扩展,允许系统之间的通信跨越不同的节点和网络。

        削峰填谷:举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。
缺点:

        延迟:如果多个消息排队等待处理,消息队列可能会引入延迟。特别是在高并发环境下,这种情况可能会更加明显。
        性能:由于消息队列需要维护消息的持久性和可靠性,因此在处理大量消息时可能会面临性能问题。
        复杂性:使用消息队列需要一定的技术知识和配置,这可能会增加系统的复杂性。
        资源占用:处理大量的消息需要大量的内存和磁盘空间,这可能会对系统资源产生压力。
        不支持实时性:消息队列主要用于异步通信,不支持实时性要求较高的场景。

3、什么是RabbitMQ

RabbitMQ
是一个开源的消息代理软件,实现了高级消息队列协议(AMQP)。

RabbitMQ使用Erlang语言编写,这是一种高性能的编程语言,特别适合于分布式系统的开发。RabbitMQ的核心功能包括消息的发布与订阅、路由、可靠性、安全等。它主要用于实现应用程序之间的异步通信和解耦,允许一个应用程序(生产者)生成消息,而另一个应用程序(消费者)异步地消费这些消息。RabbitMQ支持多种客户端接口,包括Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP和STOMP等,因此可以与多种编程语言和平台集成。

此外,RabbitMQ在易用性、扩展性和高可用性方面表现出色,适用于需要处理大量消息和实现复杂消息路由的应用场景。

4、RabbitMQ模式

1、队列模式

一个发布者发布消息,下面的接收者按队列顺序接收,比如发布了10个消息,两个接收者A,B那就是A,B总共会收到10条消息,不重复。

 2、主题模式

对于Topic模式,一个发布者发布消息,有两个接收者A,B来订阅,那么发布了10条消息,A,B各收到10条消息。

3、RabbitMQ的模式

生产者生产消息后不直接直接发到队列中,而是发到一个交换空间:Exchange,Exchange会根据Exchange类型和Routing Key来决定发到哪个队列中,这个讲到发布订阅在详细来看

二、RabbitMQ安装

1、安装erlang

rabbitmq是erlang语言编写的,安装rabbitmq之前,需要先安装erlang。

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#安装编译环境
yum install -y make gcc gcc-c++ m4 openssl openssl-devel ncurses-devel unixODBC unixODBC-devel java java-devel
#切换到src目录
cd /usr/local/src
#下载erlang地址
https://packagecloud.io/rabbitmq/erlang?page=1
#curl下载erlang rpm包
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
#更新yum
yum -y update
#用yum安装
sudo yum install erlang socat 
#验证
erl

2、下载安装RabbitMQ

(1)、下载rabbitmq

Installing RabbitMQ | RabbitMQ 官网

 #导入
#下载rabbitmq-server rpm包
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm
curl -s https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-3.8.5-1.el7.noarch.rpm.sh | sudo bash

#安装rabbitmq
rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm
#设置开机自启动
systemctl enable rabbitmq-server
#开启rabbitmq-server服务
systemctl start rabbitmq-server
#关闭rabbitmq-server服务
systemctl stop rabbitmq-server
#查看状态
systemctl status rabbitmq-server

3、配置web界面

# 停止rabbitmq
systemctl stop rabbitmq-server

# 停止开启web管理端
rabbitmq-plugins enable rabbitmq_management
# 然后启动rabbitmq就可以访问管理页面
systemctl start rabbitmq-server
#访问地址  现在访问不了 默认的账号:guest 密码:guest 只能在本地访问 需要添加账号
ip:15672

#####################
#如果开启web管理报错则
#修改/etc/hosts文件底部添加 一行 原有的不要改
#ip 主机名
192.168.91.70 tomcat
#重启系统 重新关掉防火墙和rabbitmq-server重新执行web端开启命令
rabbitmq-plugins enable rabbitmq_management
########################################

#添加账号设置权限
#这个是查看rabbitmq下面有多少用户
rabbitmqctl list_users
#增加账户admin并在设置admin的密码
rabbitmqctl add_user admin 密码
#设置admin的角色为管理员
rabbitmqctl set_user_tags admin administrator
#设置admin的权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#修改密码
rabbitmqctl change_password username  password
#删除用户
rabbitmqctl delete_user username