Rabbit 安装和控制台的使用详解

简介

RabbitMQ 是一个用 Erlang 编写的高级消息队列协议和开源消息代理软件(亦称消息中间件)。RabbitMQ 支持多种消息队列协议,包括 AMQP、MQTT、STOMP 等。 RabbitMQ 的主要特点包括:

  • 可靠性:RabbitMQ 提供了高可靠性的消息队列服务,可以保证消息的可靠传递。
  • 可伸缩性:RabbitMQ 可以轻松地扩展到数千个节点,以满足高并发和大流量的需求。
  • 高性能:RabbitMQ 采用了高效的内存数据结构和异步 I/O 模型,以实现高性能的消息处理。
  • 灵活的路由:RabbitMQ 支持灵活的路由机制,可以根据消息的属性和内容进行路由。
  • 多语言支持:RabbitMQ 提供了多种编程语言的客户端库,包括 Java、Python、Ruby、C#等。

RabbitMQ 被广泛应用于各种场景,包括分布式系统、微服务架构、物联网、实时数据处理等。

同步调用

以支付为例

同步优势:时效性强,等待到结果后才返回

同步问题:拓展性差、性能下降、级联失败问题

异步调用

异步调用方式其实就是基于消息通知的方式,一般包含三个角色:

  • 消息发送者:投递消息的人,就是原来的调用方
  • 消息代理:管理、暂存、转发消息,你可以把它理解成微信服务器
  • 消息接收者:接收和处理消息的人,就是原来的服务提供方

支付服务不在同步调用业务关联度低的服务,而是发送消息通知到 Broker

异步优势:解除耦合,扩展性强、无需等待,性能好、故障隔离、缓存消息,流量削峰填谷

异步问题:不能立即得到调用结果,时效性差、不确定下游业务执行是否成功、业务安全依赖Broker可靠性

MQ 技术选型

MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是异步调用中的 Broker

安装

RabbitMQ 是基于 Erlang 语言开发的开源消息通信中间件,官网地址

shell 复制代码
docker pull rabbitmq:3.8-management

docker run \
 -e RABBITMQ_DEFAULT_USER=dong \
 -e RABBITMQ_DEFAULT_PASS=123456 \
 -v mq-plugins:/plugins \
 --name mq \
 --hostname mq \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3.8-management

可以看到在安装命令中有两个映射的端口:

  • 15672:RabbitMQ提供的管理控制台的端口
  • 5672:RabbitMQ的消息发送处理接口

安装完成后,我们访问 http://你的服务器IP:15672即可看到管理控制台。首次访问需要登录,默认的用户名和密码在配置文件中已经指定了。登录后即可看到管理控制台总览页面 其中包含几个概念

  • publisher:生产者,也就是发送消息的一方
  • consumer:消费者,也就是消费消息的一方
  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列
  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

RabbitMQ 控制台使用

添加二个队列 hello.queue1、hello.queue2 点击选择一个交换机 交换机绑定队列 通过交换机模拟发送消息 可以看到队列收到消息和具体消息 总结:只有交换机和队列绑定了才可以发送到队列,只要和当前发送消息的交换机绑定的队列都能收到

数据隔离

我们可以在右上角看到可以选择不同的虚拟主机 新建一个用户 新建一个虚拟机

相关推荐
学历真的很重要3 分钟前
LangChain V1.0 Short-term Memory 详细指南
后端·python·语言模型·面试·langchain·agent·ai编程
s***P9829 分钟前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
傲世(C/C++,Linux)1 小时前
Linux系统编程——TCP服务器
linux·服务器·tcp/ip
IguoChan2 小时前
D2L(1) — 线性回归
后端
8***29312 小时前
Go基础之环境搭建
开发语言·后端·golang
梅花142 小时前
基于Django房屋租赁系统
后端·python·django·bootstrap·django项目·django网站
提笔了无痕2 小时前
go web开发表单知识及表单处理详解
前端·后端·golang·web
qq_12498707532 小时前
基于SpringBoot技术的企业请假审批管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·信息可视化·毕业设计
小哀22 小时前
🌸 入职写了一个月全栈next.js 感想
前端·后端·ai编程
ziwu2 小时前
【民族服饰识别系统】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积网络+resnet50算法
人工智能·后端·图像识别