消息中间件RabbitMQ核心1

1 篇文章 0 订阅
1 篇文章 0 订阅

介绍

RabbitMQ是面向消息而设计的、遵循高级消息队列协议(AMQP)的分布式消息中间件。Erlang语言开发。同时内置管理控制台。
应用:

  • 异步通信
  • 接口限流
  • 服务解耦
  • 消息分发
  • 业务延迟处理

应用场景

  • 用户注册服务解耦
  • 电商抢购异步限流
  • 电商抢购成功后消息异步分发告知用户抢购成功
  • 12306抢票后延迟处理(30分钟内支付),替代传统定时器轮询

核心基础组件

  • 生产者
  • 消费者
  • 消息
  • 对列
  • 交换机
  • 路由

生产者

生产,发送消息的程序

消费者

监听,接收,消费和处理消息的程序

消息

实际传送的数据,RabbitMQ底层都是用二进制数据流进行传输

队列

消息的暂存区或者缓存区,消息的中转站。

交换机

也可以看作消息的中转站,首次接收和分发消息,包括Headers,Fanout,Direct,Topic。

路由

一般不单独使用,与路由绑定在一起。相当于密钥,地址或者第三者。将消息路由到指定队列。

消息模型图

在这里插入图片描述

核心组件

  • 基于HeadersExchange的消息模型
  • 基于FanoutExchange的消息模型
  • 基于DirectExchange的消息模型
  • 基于TopicExchanged的消息模型
基于FanoutExchange的消息模型

具有“广播消息”的作用。
结构图
在这里插入图片描述
特点
交换机与队列是1对多的关系,消息生产经交换机中转,分发至绑定的N条队列中,最终由队列所绑定的消费者进行监听接收处理消息。
步骤:

  1. 创建消息模型(创建队列1、队列2;创建交换机FanoutExchange;创建绑定1、绑定2)
  2. 创建对象实体信息
  3. 开发生产消息的生产者类(设置广播式交换机)
  4. 开发用于监听接收消费处理消息的消费者,开发两条队列分别对应的监听消费方法

基于FaountExchange的消息模型小结:
适用于“业务数据需要广播式传输”的场景,比如“用户操作写日志”。使用基于广播式的交换机进行接收和处理。

基于DirectExchnge的消息模型

“直连传输消息”,交换机检查绑定的路由,找到绑定模型,则进行消息传输到指定队列,为严格意义上的绑定,必须指定特定的交换机和路由,并绑定到指定队列中。

结构图:
在这里插入图片描述
步骤:

  1. 创建基于DirectExchange的消息模型(创建绑定路由1、路由2;创建交换机DirectExchange;创建队列1、队列2)
  2. 创建对象实体信息
  3. 开发生产消息的生产者类(需要开发两个用于发送消息的生产者方法)
  4. 开发用于监听接收消费处理消息的消费者,开发两条队列分别对应的监听消费方法

几乎90%的业务场景都可以用DirectExchange消息模型实现

基于TopicExchange消息模型

发布-主题-订阅式的交换机,应用广泛。支持“通配式”路由,可以通过为路由的名称指定特定通配符“*”和“#”。

  • *:表示1个特定的“单词”
  • #:表示任意单词(1个、N个或没有)

当路由名称包含*时,由于*相当于1个单词,因此这种消息模型降级为“基于DirectExchange的消息模型”;当路由名称包含“#”时,由于#相当于0个或N个单词,此时这种消息模型相当于“基于FanoutExchange的消息模型”。

结构图:
在这里插入图片描述
总结:基于TopicExchange的消息模型,几乎所有业务场景都适用,“王牌”消息模型,具有普适性。

确认消费机制

消息高可用和确认消费

问题:

  • 是否发送成功?
  • RabbitMQ宕机或崩溃导致的消息丢失?
  • 监听失败或者崩溃熬制的重复消费
    解决:
  • 发送确认机制:生产确认
  • 创建队列、交换机时设置持久化参数为true,消息不丢失
  • ACK模式保证消息不重复消费。(NONE、AUTO、MANUAL)

实际生产中,使用消息的确认机制避免重复消费。

  • NONE:“无须确认”机制。比如“用户禁止某个app应用的通知提醒”
    在这里插入图片描述

  • AUTO:“自动确认”机制。消费者发送AUTO ACK的反馈信息给RabbitMq服务器。
    在这里插入图片描述

  • MANUAL:“人为手动确认消费” 。消费者手动发送ACK给服务器,之后该消息会被移除,同时告知生产者。
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值