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

AMPQ和rabbitMQ

RabbitMQ 的 Channel、Connection、Queue 和 Exchange 都是按照 AMQP(Advanced Message Queuing Protocol)标准实现的。

AMPQ的网络部分

AMQP没有使用HTTP,使用TCP自己实现了应用层协议。
AMQP实现了自己特有的网络帧格式。

一个Connection代表着一个TCP连接

服务器和客户端使用Connection过程:

  1. 建立TCP。
  2. 协商。
  3. 通信。
  4. 关闭连接

一个Connection内部包含多个Channal

Channal是Connection内部的逻辑信道,多个Channal使用一个Connection的TCP端口。

AMPQ的消息部分

AMQ Model

主要包含了三个主要的组件:

  • exchange(交换器):从Publisher程序中收取消息,并把这些消息根据一些规则路由到消息队列(Message Queue)中
  • message queue(消息队列):存储消息。直到消息被安全的投递给了消费者。
  • binding :定义了 message queue 和 exchange 之间的关系,提供了消息路由的规则。

在这里插入图片描述

AMQP在这个过程中,生产者只能把所有消息发到一个单点(交换器),而不能直接把消息发到某个消息队列(message-queue)中。
绑定是交换器和消息队列之间的关系,告诉交换器如何路有消息。

AMPQ协议的交换器类型

Direct Exchange(直接交换器)

绑定在direct exchange上的队列都需要设置其路由键,当消息到达direct exchange后,会根据消息的路由键(消息路由键=队列绑定在Direct exchange上的路由键)转发到队列。
它实现了点对点的消息传递模式。

Fanout Exchange(扇形交换器)

队列绑定在扇形交换器上。扇形交换器会将收到的消息直接广播到与之绑定的所有队列。
它适用于发布/订阅模式,一传多。

Topic Exchange(主题交换器)

每个队列绑定到主题交换器上都会设置其路由匹配规则。主题交换器可以根据消息的路由键和队列的绑定键之间的模式匹配规则进行路由。
一个消息到达会尝试所有绑定队列的路由匹配模式,如果匹配就路由。

  • 表示一个单词,# 表示零个或多个单词。

Headers Exchange(头部交换器)

头部交换器根据消息的头部属性进行匹配,而不是路由键。在绑定时可以指定一个或多个键值对作为匹配规则,只有当消息的头部属性和绑定规则完全匹配时,消息才会被路由到相应的队列。它适用于根据消息的元数据属性进行路由的场景。

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

相关文章:

  • 在存在代理的主机上,为docker容器配置代理
  • 备考ICA----Istio实验4---使用 Istio 进行金丝雀部署
  • LeetCode-热题100:39.组合总和
  • 演讲嘉宾公布 | 智能家居与会议系统专题论坛将于3月28日举办
  • Unity发布webgl之后打开PDF文件,不使用js,不和浏览器交互
  • Python之装饰器-无参装饰器
  • 音视频实战--音视频编码
  • 【黄金手指】windows操作系统环境下使用jar命令行解压和打包Springboot项目jar包
  • React【Day1】
  • MNN 执行推理(九)
  • 算法公式汇总
  • c语言管理课程信息系统
  • 大模型在天体物理学研究中的辅助作用与案例分析
  • 洛谷_P1873 [COCI 2011/2012 #5] EKO / 砍树_python写法
  • Android_NDK调试
  • 全量知识系统 概要设计(SmartChat回复)
  • 一、SpringBoot基础搭建
  • some/ip CAN CANFD
  • HTTP Header Fields
  • 基于FPGA的FFT图像滤波设计
  • WPF 立体Border
  • java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
  • 代码随想录(day8)——字符串
  • JavaScript 权威指南第七版(GPT 重译)(二)
  • 【python_往企业微信群中发送文件】
  • 华为校招机试 - 循环依赖(20240320)
  • 基于Spring Boot技术的幼儿园管理系统
  • 查找众数及中位数 - 华为OD统一考试(C卷)
  • bash命令执行.sh文件 windows python环境
  • refreactive vue3