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

RabbitMQ的简介

三个概念

  1. 生产者:生产消息的服务
  2. 消息代理:消息中间件,如RabbitMQ
  3. 消费者:获取使用消息的服务

消息队列到达消费者的两种形式

  1. 队列(queue):点对点消息通信(point-to-point)

    消息进入队列,消费者监听队列,一旦有消息则获取消息,消息被获取后移除队列。
    队列可以被多个消费者监听,但是只有一个可以获取。

  2. 主题(topic):发布(publish)/订阅(subscribe)消息通信|

    发布者(生产者)发送消息到主题,多个订阅者(消费者)订阅(监听)这个主题,则在消息到达的同时就会同时得到消息

在这里插入图片描述

两种常见的消息中间件协议

  1. JMA:(Java Message Servier) Java 消息服务
    -基于JVM消息代理规范。ActiveMQ、HornetMQ是JMS实现

  2. AMQP:(Advanced Message Queuing Protocol)
    -高级消息队列协议,兼容JMS
    -RabbitMQ是AMOP的实现。

    主要区别JMSAMOP
    跨语言
    跨平台
    model1) point-to-point 点对点
    2)topic 主题
    1)direct exchange(直接交换机)—点对点
    2)fanout exchange
    3)topic exchange

交换机类型

direct(直接)、fanout(扇出)、topic(主题)、headers

direct

路由键需要与binding全匹配才行

在这里插入图片描述

fanout–广播模式

不处理绑定和路由键,收到消息直接全部发送,类似广播

在这里插入图片描述

topic

需要绑定关系(binding)和路由键(routing key)按一定规则匹配,路由键和绑定关系分割成单词,单词间用".“隔开。同时会识别两个通配符”#“和”*“。”#"匹配0个或多个单词 "*"匹配一个单词

在这里插入图片描述

RabbitMQ的执行流程

生产者:建立一个长连接,通过连接里面的信道发送消息-指定哪一个交换机。

消息message:头+体:消息头中有一个很重要的路由键 (Routing Key)

RabbitMQ:消息到达中间件,服务器会交给交换机(exchange),交换机会根据消息中的路由键(routing key)去寻找对应的绑定关系(binding),然后消息入队。

**消费者:**建立一个长连接,每个长连接会有很多信道。每个信道用来监听队列

在这里插入图片描述

消息确认机制

confirmCallback:消息达到消息服务(broker),就会执行。集群模式下,要被所有的代理都接受到才会执行。

returnCallback:交换机到队列投递失败后执行。

ack:消费者获取消息后自动确认,服务端会删除这个消息。需改为手动确认。否则宕机后会消息丢失。调用channel.basicAck()方法签收

在这里插入图片描述

http://www.xdnf.cn/news/526627.html

相关文章:

  • React集成百度【JSAPI Three】教程(002):设置不同的环境效果
  • 数据结构(二) 线性表
  • java中的Servlet4.x详解
  • 湖北理元理律师事务所观察:债务服务中的“倾听者价值”
  • 深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务
  • APP小程序抓包和下游代理
  • 云原生攻防2(Docker基础补充)
  • 2.微服务-配置
  • Fines for Parking vs. Free News
  • 云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(下)
  • Kotlin 协程
  • MySQL故障排查
  • 高效掌握二分查找:从基础到进阶
  • LED太阳光模拟器与氙灯太阳光模拟器的性能区别
  • Protobuf协议生成和使用
  • 5G金融互联:迈向未来金融服务的极速与智能新时代
  • 判断三方库是64位还是32位
  • CVE-2015-3934 Fiyo CMS SQL注入
  • 代码随想录算法训练营Day37 | 完全背包基础理论 518. 零钱兑换II 377. 组合总和Ⅳ 57. 爬楼梯(第八期模拟笔试)
  • 网络协议之一根网线就能连接两台电脑?
  • Spring boot 学习笔记2
  • 易境通海外仓系统:一件代发全场景数字化解决方案
  • MySQL函数触发:函数处理与触发器自动化应用
  • 【Web渗透】DVWA搭建详细教程
  • NLP学习路线图(一): 线性代数(矩阵运算、特征值分解等)
  • MATLAB中islogical函数用法
  • wpf DataGrid 行选择事件
  • kafka 问与答
  • Cursor日常配置指南
  • CSS的padding属性设置探讨