【消息队列】消息队列

本文详细介绍了消息队列的基本概念,包括其工作原理、主要应用场景(异步处理、流量控制、服务解耦和发布订阅)、关键特性如高可用、高并发,以及Broker、生产者和消费者的角色。此外,还探讨了点对点和发布订阅模型、顺序性保证、ACK确认机制、消息持久化和同步异步收发。最后列举了适合的选择消息队列产品清单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是消息队列

消息+队列(MessageQueue,简称MQ)。
本质是就是个队列,FIFO先入先出,只不过队列中存放的内容是message,从而叫消息队列。

主要用途:不同服务server、进程process、线程thread之间通信。

使用消息队列的场景

1. 异步处理

短信通知、终端状态推送、App推送、用户注册等。
在这里插入图片描述

2. 流量控制(削峰)

在这里插入图片描述

3. 服务解耦

在这里插入图片描述

4. 发布订阅
  • 比如游戏里面跨服:
    • 广播今天整体还剩多少把屠龙刀可以暴
    • 广播用户暴的屠龙刀的消息
5. 高并发缓冲

◼ kafka 日志服务、监控上报

消息队列特性

1. 高可用
  1. 集群+每个单节点增加副本
2. 高并发
  1. 批量发送(满足①特定发送容量,或者②达到定时发送条件 才发送)
  2. 多通道 (集群)

消息队列-基本概念和原理

1. Broker

Broker的概念来自与Apache ActiveMQ,通俗的讲就是MQ的服务器

2. 消息的生产者、消费者

消息生产者Producer:发送消息到消息队列。
消息消费者Consumer:从消息队列接收消息。
在这里插入图片描述

3. 点对点消息队列模型

消息生产者向一个特定的队列发送消息,消息消费者从该队列中接收消息;
一条消息只有一个消费者能收到;
在这里插入图片描述

4. 发布订阅消息模型-Topic

发布订阅消息模型中,支持向一个特定的主题Topic发布消息,0个或多个订阅者接收来自这个消息主题的消息。在这种模型下,发布者和订阅者彼此不知道对方。
在这里插入图片描述

5. 消息的顺序性保证

基于Queue消息模型,利用FIFO先进先出的特性,可以保证消息的顺序性。

6. 消息的ACK确认机制

即消息的Ackownledge确认机制,为了保证消息不丢失,消息队列提供了消息Acknowledge机制,即ACK机制,当Consumer确认消息已经被消费处理,发送一个ACK给消息队列,此时消息队列便可以删除这个消息了。如果Consumer宕机/关闭,没有发送ACK,消息队列将认为这个消息没有被处理,会将这个消息重新发送给其他的Consumer重新消费处理。

7. 消息的持久化

消息的持久化,对于一些关键的核心业务来说是非常重要的,启用消息持久化后,消息队列宕机重启后,消息可以从持久化存储恢复,消息不丢失,可以继续消费处理。

8. 消息的同步和异步收发

同步:消息的收发支持同步收发的方式 一应一答。(不建议使用)
同时还有另一种同步方式:同步收发场景下,消息生产者和消费者双向应答模式,例如:张三写封信送到邮局中转站,然后李四从中转站获得信,然后在写一份回执信,放到中转站,然后张三去取,当然张三写信的时候就得写明回信地址;消息的接收如果以同步的方式(Pull)进行接收,如果队列中为空,此时接收将处于同步阻塞状态,会一直等待,直到消息的到达。

异步:消息的收发同样支持异步方式:异步发送消息,不需要等待消息队列的接收确认;异步接收消息,以Push的方式触发消息消费者接收消息。

可供选择的消息队列产品

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值