程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 中间件 - RabbitMQ

    • 消息队列 - 介绍
    • RabbitMQ - 介绍
      • 1. RabbitMQ的概念
      • 2. 四大核心概念
        • 2.1 生产者(Producer)
        • 2.2 交换机(Exchange)
        • 2.3 队列(Queue)
        • 2.4 消费者(Consumer)
      • 3. RabbitMQ特性
      • 4. 各个名词介绍
        • 4.1 Broker(消息代理)
        • 4.2 Virtual Host(虚拟主机)
        • 4.3Connection(连接)
        • 4.4 Channel(通道)
        • 4.5 Exchange(交换机)
        • 4.6 Queue(队列)
        • 4.7 Binding(绑定)
    • RabbitMQ - 安装
    • RabbitMQ - 基础案例
    • RabbitMQ - 应答与发布
    • RabbitMQ - 交换机
    • RabbitMQ - 死信队列
    • RabbitMQ - 延迟队列
    • RabbitMQ - 高级发布确认
    • RabbitMQ - 优先级
    • SpringBoot整合RabbitMQ
  • 消息数据库
  • 中间件 - RabbitMQ
scholar
2023-11-08
目录

RabbitMQ - 介绍

  • 1. RabbitMQ的概念
  • 2. 四大核心概念
    • 2.1 生产者(Producer)
    • 2.2 交换机(Exchange)
    • 2.3 队列(Queue)
    • 2.4 消费者(Consumer)
  • 3. RabbitMQ特性
  • 4. 各个名词介绍
    • 4.1 Broker(消息代理)
    • 4.2 Virtual Host(虚拟主机)
    • 4.3Connection(连接)
    • 4.4 Channel(通道)
    • 4.5 Exchange(交换机)
    • 4.6 Queue(队列)
    • 4.7 Binding(绑定)

RabbitMQ 官网 (opens new window)

# 1. RabbitMQ的概念

RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是 一个快递站,一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。

# 2. 四大核心概念

# 2.1 生产者(Producer)

生产者是指那些创建并发送消息到消息队列系统的程序或应用组件。它们负责生成数据或消息,然后使用特定的协议将这些消息发送到消息队列系统中。在RabbitMQ中,生产者将消息发送到交换机,而不是直接发送到队列。生产者关注于消息的生成和发送,不涉及消息的具体处理逻辑。

# 2.2 交换机(Exchange)

交换机是RabbitMQ中的一个关键组件,它扮演着消息路由的角色。生产者将消息发送给交换机,交换机根据预定义的规则决定如何处理这些消息:可以是将消息路由到一个队列,多个队列,或者丢弃消息。RabbitMQ支持多种类型的交换机,比如直接交换机、主题交换机、扇出交换机等,每种交换机根据不同的路由策略来转发消息。

# 2.3 队列(Queue)

队列是RabbitMQ内部使用的数据结构,用于存储消息直到它们被消费。队列的存在使得消息可以异步地传输,即生产者和消费者不需要同时在线。生产者通过交换机将消息发送到队列,消费者则从队列中取出消息进行处理。队列支持多个生产者发送消息和多个消费者接收消息,是消息传递过程中的缓冲区。

# 2.4 消费者(Consumer)

消费者是从队列中接收并处理消息的程序或应用组件。消费者连接到队列,等待消息的到来,一旦有消息被送到队列中,消费者就会接收这些消息并进行相应的处理。消费者的职责是完成消息的最终处理,比如更新数据库、发送邮件通知等。

注意生产者,消费者和消息中间件很多时候并不在同一机器上。同一个应用程序既可以是生产者又是可以是消费者

image-20240325015231869

# 3. RabbitMQ特性

image-20211108224409739

# 4. 各个名词介绍

image-20211108223230468

在RabbitMQ这样的消息队列系统中,有几个关键的概念构成了整个消息传递和处理的框架。这些概念协同工作,确保消息能够高效、准确地从发送者传输到接收者。以下是对这些概念的详细总结:

# 4.1 Broker(消息代理)

Broker是消息传递的中心节点,它负责接收生产者发送的消息,并将这些消息分发给相应的消费者。RabbitMQ Server本身就是一个Message Broker,提供了消息的接收、存储和转发功能。

# 4.2 Virtual Host(虚拟主机)

Virtual Host是为了实现多租户和更细粒度的访问控制而设计的。它允许将RabbitMQ服务器划分为多个虚拟分组,每个分组可以有自己独立的队列、交换机等设置。这类似于网络中的命名空间概念,使得不同的用户或应用可以在同一个RabbitMQ实例上进行隔离操作。

# 4.3Connection(连接)

Connection是指生产者或消费者与Broker之间的TCP连接。这是消息传输的基础通道,确保了数据可以在不同的节点之间安全可靠地传输。

# 4.4 Channel(通道)

Channel是在Connection内部建立的逻辑连接,用于减少频繁建立或销毁TCP连接的开销。应用程序可以为每个线程或任务创建独立的Channel,实现并行消息处理,而无需为每个任务建立新的TCP连接。Channel之间是完全隔离的,保证了操作的独立性和安全性。

# 4.5 Exchange(交换机)

Exchange是消息到达Broker的第一个处理点,它根据预定义的规则(如Routing Key)来决定消息应该被路由到哪个队列。RabbitMQ支持多种类型的Exchange,包括直连(Direct)、主题(Topic)、扇出(Fanout)等,以支持不同的消息分发策略。

# 4.6 Queue(队列)

Queue是存储消息的容器,等待消费者连接并处理存储的消息。队列支持多个生产者和消费者,使得消息可以被多个消费者共享或独立消费。

# 4.7 Binding(绑定)

Binding是Exchange和Queue之间的逻辑链接。通过Binding,Exchange可以知道消息应该被路由到哪些队列。Binding可以包含Routing Key,作为消息分发的依据。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
消息队列 - 介绍
RabbitMQ - 安装

← 消息队列 - 介绍 RabbitMQ - 安装→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式