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 点击选择一个交换机 交换机绑定队列 通过交换机模拟发送消息 可以看到队列收到消息和具体消息 总结:只有交换机和队列绑定了才可以发送到队列,只要和当前发送消息的交换机绑定的队列都能收到

数据隔离

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

相关推荐
程序猿-瑞瑞6 分钟前
24 go语言(golang) - gorm框架安装及使用案例详解
开发语言·后端·golang·gorm
组合缺一9 分钟前
Solon v3.0.5 发布!(Spring 可以退休了吗?)
java·后端·spring·solon
猿来入此小猿13 分钟前
基于SpringBoot在线音乐系统平台功能实现十二
java·spring boot·后端·毕业设计·音乐系统·音乐平台·毕业源码
愤怒的代码27 分钟前
Spring Boot对访问密钥加解密——HMAC-SHA256
java·spring boot·后端
栗豆包43 分钟前
w118共享汽车管理系统
java·spring boot·后端·spring·tomcat·maven
BUG 4041 小时前
LINUX--shell
linux·运维·服务器
万亿少女的梦1681 小时前
基于Spring Boot的网络购物商城的设计与实现
java·spring boot·后端
菜鸟小白:长岛icetea1 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi1 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos
dowhileprogramming2 小时前
Python 中的迭代器
linux·数据库·python