RabbitMQ详解
什么是RabbitMQ
使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。
RabbitMQ比Kafka可靠,Kafka更适合IO高吞吐的处理,一般应用在大数据日志处理或对实时性(少量延迟),可靠性(少量丢数据)要求稍低的场景使用,比如ELK日志收集。
RabbitMQ能做什么
RabbitMQ可以帮助开发者构建可靠、高效、可扩展的分布式系统,实现异步通信、任务分发和事件驱动等功能。它被广泛应用于各种场景,包括微服务架构、消息驱动的架构、实时数据处理等。
RabbitMQ工作机制
生产者#
消息的创建者,负责创建和推送消息到消息服务器
消费者#
消息的接收方,接受消息并处理消息
消息服务器#
RabbitMQ本身,不会产生和消费消息,相当于一个中转站,将生产者的消息路由给消费者
RabbitMQ角色
ConnectionFactory#
接管理,应用程序或消费方与RabbitMQ建立连接的管理器
Channel#
信道,推送消息的通道
Exchange#
交换机,用于接收分配消息到队列中
Queue#
保存消息
Routingkey#
消息会携带routingKey,决定消息最终的队列
BindingKey#
Queue通过bindingKey与交换机绑定
安装
【Windows安装RabbitMQ详细教程】_rabbitmq安装教程_慕之寒的博客-CSDN博客
RabbitMQ控制台介绍
2.1. overview概览#
2.2. Admin用户和虚拟主机管理#
2.2.1. 添加用户#
上面的Tags选项,其实是指定用户的角色,可选的有以下几个:
● 超级管理员(administrator)
● 可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。监控者(monitoring)
● 可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)策略制定者(policymaker)
● 可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。普通管理者(management)
● 仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。其他无法登陆管理控制台,通常就是普通的生产者和消费者。
2.2.2. 创建虚拟主机#
为了让各个用户可以互不干扰的工作,RabbitMQ添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。2.2.3. 支持的消息模型#
5种消息模式#
1、简单模式 HelloWorld
一个生产者、一个消费者,不需要设置交换机(使用 默认的交换机)
2、工作队列模式 Work Queue
一个生产者、多个消费者(竞争关系),不需要设置交换机(使用默认 的交换机)
3、发布订阅模式 Publish/subscribe
需要设置类型为fanout的交换机,并且交换机和队列进行绑定, 当发送消息到交换机后,交换机会将消息发送到绑定的队列
4、路由模式 Routing
需要设置类型为direct的交换机,交换机和队列进行绑定,并且指定routing key,当发送消息到交换机后,交换机会根据routing key将消息发送到对应的队列
5、通配符模式 Topic
需要设置类型为topic的交换机,交换机和队列进行绑定,并且指定通配符方式的 routing key,当发送消息到交换机后,交换机会根据routing key将消息发送到对应的队列
五种消息模式详解:RabbitMQ五大模式轻松理解_rabbitmq模式_风影浪子的博客-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了