当前位置: 首页 > news >正文

RabbitMQ前置概念

文章目录

    • 1.AMQP协议是什么?
    • 2.rabbitmq端口介绍
    • 3.消息队列的作用和使用场景
    • 4.rabbitmq工作原理
    • 5.整体架构核心概念
    • 6.使用
    • 7.消费者消息推送限制(work模型)
    • 8.fanout交换机
    • 9.Direct交换机
    • 10.Topic交换机(推荐)
    • 11.声明队列和交换机(java代码生成创建)
    • 12.消息转换器

1.AMQP协议是什么?

AMQP(Advanced Message Queuing Protocol)即高级消息队列协议,它是一个开放的标准应用层协议,旨在为消息中间件提供统一的、标准化的通信规范。

AMQP 定义了消息的发布、路由、存储、消费等一系列机制和流程,具有跨语言、跨平台的特点,能够促进不同消息系统之间的互操作性和集成性。它使得不同的应用程序可以通过遵循该协议与消息队列进行高效、可靠的交互。

2.rabbitmq端口介绍

5672:编程语言客户端连接端口

15672:web管理界面端口

25672:集群端口

3.消息队列的作用和使用场景

解耦:

异步提速:

流量削峰:

故障隔离

4.rabbitmq工作原理

1.Broker:接收和分发消息的应用,RabbitMQServer就是 Message Broker

2.Virtual host: Virtual host是一个虚拟主机的概念,一个Broker中可以有多个Virtual host,每个Virtual host都有一套自己的Exchange和Queue,同个Virtual host中的Exchange和Queue不能重名,不同的Virtual host中的Exchange和Queue名字可以一样。这样,不同的用户在访问同一个RabbitMQ Broker时,可以创建自己单独的Vitual host,然后在自己的Virtual host中创建Exchange和Queue,很好地做到了不同用户之间相互隔离的效果。

3.Connection:publisher/consumer和borker之间的TCP连接

4.Channel:发送消息的通道,如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立TCP Connection 的开销将是巨大的,效率也较低。Channel是在 connection 内部建立的逻辑连接,如果应用程 序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQPmethod 包含了 channel id 帮助客 户端和 message broker 识别 channel,所以 channel之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销

5.Exchange:message 到达 broker 的第一站,根据分发规则,匹配査询表中的 routing key,分发 消息到 queue 中去。常用的类型有:direct(point-to-point),topic (publish-subscribe) and fanout (multicast)

6.Queue:Queue是一个用来存放消息的队列,生产者发送的消息会被放到Queue中,消费者消费消息时也是从Queue中取走消息

7.Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保 存到 exchange 中的查询表中,用于message 的分发依据

5.整体架构核心概念

6.使用

7.消费者消息推送限制(work模型)

8.fanout交换机

9.Direct交换机

10.Topic交换机(推荐)

11.声明队列和交换机(java代码生成创建)

方式一

方式二

12.消息转换器

http://www.lryc.cn/news/523193.html

相关文章:

  • http转化为https生成自签名证书
  • 《贪心算法:原理剖析与典型例题精解》
  • 【网络协议】【http】【https】RSA+AES-TLS1.2
  • 【数据库】MySQL数据库之约束与多表查询
  • 【Pandas】pandas Series dot
  • 02UML图(D2_行为图)
  • Kali环境变量技巧(The Environment Variable Technique Used by Kali
  • 【C++】如何从源代码编译红色警戒2地图编辑器
  • 安路FPGA开发工具TD:问题解决办法 及 Tips 总结
  • 【Django开发】django美多商城项目完整开发4.0第12篇:商品部分,表结构【附代码文档】
  • IDEA2023版中TODO的使用
  • windows 搭建flutter环境,开发windows程序
  • 支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节
  • 一文读懂iOS中的Crash捕获、分析以及防治
  • 代码随想录刷题day11|(链表篇)206.翻转链表
  • 【STM32-学习笔记-8-】I2C通信
  • 2025年1月17日(点亮三色LED)
  • ASP .NET Core 学习 (.NET 9)- 创建 API项目,并配置Swagger及API 分组或版本
  • mysql-5.7.18保姆级详细安装教程
  • RK3588平台开发系列讲解(NPU篇)NPU 驱动的组成
  • ESP32学习笔记_FreeRTOS(6)——Event and Notification
  • 力扣-数组-350 两个数组的交集Ⅱ
  • 云原生第二次练习
  • SpringMVC复习笔记
  • 前端小案例——网页井字棋
  • ComfyUI-PromptOptimizer:文生图提示优化节点
  • AudioGPT全新的 音频内容理解与生成系统
  • thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案
  • Hexo + NexT + Github搭建个人博客
  • 使用Sum计算Loss和解决梯度累积(Gradient Accumulation)的Bug