RabbitMQ消息队列 安装及基本介绍

一.MQ介绍

        Message Queue (MQ)是一种跨进程的通信机制,用于在系统之间进行传递消息。MQ作为消息中间件,可以进行异步处理请求,从而减少请求响应时间和解耦

1.1 应用场景

1.1.1 系统之间通过MQ进行消息通信,异步解耦

        多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败。

1.1.2 异步处理消息

        应用间并发处理消息,相比串行处理,减少处理时间;

        比如用户注册,系统需要发送注册邮件,验证短信。MQ作为消息中间件,可以进行异步处理请求,从而减少请求响应时间。

1.1.3 肖锋限流

        广泛应用于高并发系统中,避免流量过大导致处理请求阻塞的情况

二.RabbitMQ


        RabbitMQ是支持多种消息协议,易于部署和使用的开源消息代理服务器,用于在分布式系统中存储转发消息。

        RabbitMQ 是一个消息代理,用于在应用程序之间传递消息。它接收、存储并转发消息,允许不同的应用程序之间进行异步通信。

  • 由以高性能、健壮以及可伸缩性出名的Erlang语言编写;
  • 提供了成熟的高并发,高可用的解决方案 可以根据实际业务情况动态地扩展集群节点。
  • 在集群中的机器上设置镜像,使得在部分节点出现问题的情况下仍然可用。
  • 支持多种客户端语言,如:Python、Ruby、.NET、Java等,支持AJAX。
  • RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点等。
MQ产品语言支持并发量消息回溯支持性能协议可靠性
RocketMQJava, C++较高支持良好自定义TCP良好
KafkaJava非常高不支持卓越自定义TCP良好
ActiveMQJava万级不支持一般JMS规范较差

  AMQP:RabbitMQ 实现了高级消息队列协议(AMQP),这是一个开放的、通用的消息协议,支持在分布式系统中可靠地传递消息。

  1. Producer:生产者,即消息的提供者,是发送消息的应用程序
  2. Consumer:消费者,即消息的使用者,接收并处理消息的应用程序。
  3. Message:消息,即进程之间进行通信的数据
  4. Queue:队列,即消息存放的容器,消息以先进先出的方式进行存储,生产者将消息发布到队列,而消费者则从队列中获取消息进行处理。
  5. 交换机:交换机是消息的分发中心,决定将消息路由到哪个队列。生产者将消息发送到交换机,交换机根据规则将消息路由到一个或多个队列。
  6. 绑定:绑定是交换机和队列之间的规则,它定义了如何将消息从交换机路由到特定的队列。
  7. 持久性:RabbitMQ 支持消息的持久性,确保即使在代理重新启动后,消息也不会丢失。
  8. Vhost:虚拟主机,用于存储消息队列。
  9. 虚拟主机vhost是AMQP概念的基础,RabbitMQ包含了开箱即用的默认虚拟主机"/“;
  10.  vhost之间是绝对隔离,保障了队列和交换机的安全性。  

 2.1 mac下 Mq安装

使用homebrew安装rabbitmq

官方文档参考:
The Homebrew RabbitMQ Formula | RabbitMQmac 下的安装命令:

## 更新命令
brew update

## 查找
brew search rabbitmq

## 安装
brew install rabbitmq

## 安装好后,查看rabbitmq的安装信息:
brew info rabbitmq

## 后台启动的方式
brew services start rabbitmq

## 停止rabbit服务器
brew services stop rabbitmq

2.2 环境变量

Intel Macs,把CLI工具路径设置了软连接,在 /usr/local/sbin
Apple Silicon Macs,在 `/opt/homebrew/sbin ;

rabbitmq-defaults -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-defaults
rabbitmq-diagnostics -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-diagnostics
rabbitmq-env -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-env
rabbitmq-plugins -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-plugins
rabbitmq-queues -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-queues
rabbitmq-server -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-server
rabbitmq-streams -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-streams
rabbitmq-upgrade -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-upgrade
rabbitmqadmin -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmqadmin
rabbitmqctl -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmqctl
vmware-rabbitmq -> ../Cellar/rabbitmq/3.12.2/sbin/vmware-rabbitmq

如果上面的路径没有在PATH里,则需要添加一下:

# for macOS Intel
export PATH=$PATH:/usr/local/sbin

# for Apple Silicon
export PATH=$PATH:/opt/homebrew/sbin

2.3 启动:

#方式一:
brew services start rabbitmq;
 
#方式二:进入默认的安装目录下,手动启动

2.4 安装RabbitMQWeb管理界面  

#默认情况下,rabbitmq是没有安装RabbitMQWeb管理界面及授权操作的 
rabbitmq-plugins enable rabbitmq_management
端口用处
5672RabbitMQ通讯端口,也就是连接使用的端口
15672RabbbitMQ管理界面端口,需要开启Management插件

说明:rabbitmq有一个默认账号和密码是:guest 默认情况只能在localhost本机下访问,所以需要添加一个远程登录的用户。

访问:http://ip:15672/本例子是安装本地的,所以这边访问地址:http://localhost:15672/ 

三、Rabbit管理段操作

3.1 进入管理界面

用户名:guest
密码:guest
前提:只有localhost才能访问

3.2创建用户:

#新建用户
rabbitmqctl add_user 账号 密码
#给用户分配操作权限
rabbitmqctl set_user_tags 账号 administrator
#修改密码
rabbitmqctl change_password Username Newpassword 修改密码
#删除用户
rabbitmqctl delete_user Username 删除用户
#查看所有用户
rabbitmqctl list_users 查看用户清单
#为用户设置访问权限
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
角色权限说明
超级管理员administrator用户可以做监控所能做的一切,管理用户、vhosts和权限,关闭其他用户的连接,并管理所有vhosts的策略和参数
监控者monitoring可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者policymaker可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
普通管理者management仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
其他无法登陆管理控制台,通常就是普通的生产者和消费者。

3.3 创建 Virtual Hosts

选中 Admin 用户设置权限

四、队列的工作模式

模式

交换机

图例

说明

Simple简单模式

 一个生产者对应一个消费者

work工作模式

一对多,每个消费者得到的消息唯一(work模式下最大发挥每个消费者的性能)

发布订阅模式

FANOUT

一对多,生产者将消息发送给交换机,交换机再将消息转发给与之绑定的队列,发布订阅模式对应的交换机类型是FANOUT

Routing路由模式

DIRECT

        一对多,可以根据指定的路由key,将消息发送给不同的队列,交换机类型是DIRECT

Topic主题模式

Topic

 一对多,在Routing路由模式的基础上,可以使用通配符定义路由key

  * 匹配单个字符

   # 匹配任意个字符

一个简单的一个消息推送到接收的流程,提供一个简单的图 

黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值