RabbitMQ入门指南(二):架构和管理控制台的使用

前言

RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。


一、RabbitMQ架构

RabbitMQ架构图:

在RabbitMQ的架构中,有几个关键的概念需要理解:

  • Publisher(生产者)

    • 生产者是消息的发送方,它负责将消息发送到RabbitMQ服务器。
    • 生产者可以向多个队列发送消息,也可以向特定的交换机发送消息。
    • 生产者通常使用AMQP协议与RabbitMQ服务器进行通信。
  • Consumer(消费者)

    • 消费者是消息的接收方,它从队列中获取并处理消息。
    • 消费者可以同时从多个队列接收消息,也可以使用长轮询或短轮询方式来控制消息的接收速度。
    • 消费者通常使用AMQP协议与RabbitMQ服务器进行通信。
  • Queue(队列)

    • 队列是RabbitMQ的核心组件,它负责存储消息。
    • 生产者发送的消息会先暂存到队列中,等待消费者处理。
    • 队列可以持久化存储消息,即使服务器重启,消息也不会丢失。
  • Exchange(交换机)

    • 交换机负责消息路由,它根据一定的规则将生产者的消息投递到特定的队列中。
    • RabbitMQ支持多种类型的交换机,如直接交换机、主题交换机和路由交换机等。
    • 交换机可以根据需要配置为单播或广播模式,以控制消息的投递方式。
  • Virtual Host(虚拟主机)

    • 虚拟主机是RabbitMQ中的一个重要概念,它起到数据隔离的作用。
    • 在一个RabbitMQ集群中,可以拥有多个虚拟主机,每个虚拟主机相互独立,有自己的交换机、队列等资源。
    • 通过虚拟主机隔离,可以实现不同应用或不同环境之间的数据隔离,提高系统的可扩展性和安全性。

二、RabbitMQ管理控制台的使用

1.Exchange交换机

Exchanges选项卡中,可以观察到众多预先定义的交换机存在。

点击任意交换机,将进入交换机详情页面,可以在该页面使用控制台中的publish message 发送一条消息。

在此处,通过控制台模拟了生产者发送的消息。由于不存在消费者,消息最终丢失,这表明交换机不具备存储消息的能力。

2.Queue队列

Queues and Streams选项卡中,可以新建一个队列 。

新建队列:

在创建队列时,有一些重要的参数需要配置,这些参数的选择直接影响消息处理,需根据业务需求合理配置,以下是对这些参数的详细解释:

参数 解释
Virtual Host Virtual Host是RabbitMQ中的一个隔离环境,它类似于数据库中的schema或者命名空间。每个vhost都拥有自己的队列、交换机、绑定关系等。通过使用不同的vhost,可以实现不同应用或不同环境之间的数据隔离,提高系统的可扩展性和安全性。在创建队列时,需要指定其所在的vhost。
Type Type定义了队列的种类。RabbitMQ支持多种类型的队列,如普通队列、持久化队列、排他队列等。根据实际需求选择合适的队列类型,可以影响消息的存储、传递和持久化等方面的特性。
Name Name是队列的唯一标识符,用于在RabbitMQ中识别和区分不同的队列。在创建队列时,需要为其指定一个唯一的名称。在后续的操作中,可以通过名称来引用和操作该队列。
Durability Durability选项决定了队列的持久性,可以根据业务需求选择适当的持久性设置,该设置将影响消息的可靠性及数据安全。当选择Durable时,队列将在服务器重启后继续存在。选择Transient时,队列在服务器重启后将被删除。
Arguments Arguments是用于配置队列的额外参数集合。通过传入不同的参数值,可以进一步定义队列的行为和特性。例如,可以设置队列的最大长度、消息的最大寿命、消息的优先级等参数。这些参数可以根据实际业务需求进行定制化配置,以满足特定的性能和可靠性要求。

查看队列列表:

3.绑定Exchange交换机和Queue队列

Exchanges选项卡中选择交换机:

在交换机详情页,点击**Bindings**,在表单中填写要绑定的队列名称:

查看绑定结果:

4. 发送消息

Exchanges 选项卡中进入交换机详情页点击Publish message发送消息:

Queues and Streams选项卡中,可以发现队列中已经有一条消息:

进入队列详情页,点击Get messages,查看消息(如果有消费者监听了MQ的该队列,就能接收到消息):

5.数据隔离

在**Admin**选项卡中创建用户:

查看创建结果(该用户没有任何Virtual Host的访问权限 ):

退出登录,切换账号,并且点击Virtual Host管理页,创建Virtual Host:

查看创建结果:

点击右上角的Virtual Host下拉菜单,切换Virtual Host:

Queues and Streams选项卡中,查看队列,发现之前的队列无法查看(基于virtual host的隔离效果):


总结

RabbitMQ是一个开源的消息队列软件,旨在提供可靠的消息传递和消息队列功能。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容,希望对大家有所帮助。

相关推荐
沈韶珺1 小时前
Visual Basic语言的云计算
开发语言·后端·golang
沈韶珺1 小时前
Perl语言的函数实现
开发语言·后端·golang
美味小鱼2 小时前
Rust 所有权特性详解
开发语言·后端·rust
我的K84092 小时前
Spring Boot基本项目结构
java·spring boot·后端
慕璃嫣3 小时前
Haskell语言的多线程编程
开发语言·后端·golang
晴空๓3 小时前
Spring Boot项目如何使用MyBatis实现分页查询
spring boot·后端·mybatis
Hello.Reader7 小时前
深入浅出 Rust 的强大 match 表达式
开发语言·后端·rust
customer0810 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
S-X-S11 小时前
RabbitMQ持久化队列配置修改问题
分布式·rabbitmq