RocketMQ常见的消息类型

一. 普通消息

  1. 同步发送消息
    同步发送消息是指,Producer发出⼀条消息后,会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高,但消息发送效率太低。
    在这里插入图片描述
  2. 异步发送消息
    异步发送消息是指,Producer发出消息后无需等待MQ返回ACK,直接发送下⼀条消息。该方式的消息可靠性可以得到保障,消息发送效率也可以。
    在这里插入图片描述
  3. 单向发送消息
    单向发送消息是指,Producer仅负责发送消息,不等待、不处理MQ的ACK。该发送方式时MQ也不返回ACK。该方式的消息发送效率最高,但消息可靠性较差。
    在这里插入图片描述

二. 顺序消息

	顺序消息指的是,严格按照消息的发送顺序进行消费的消息(FIFO)。
  • 全局有序
    当发送和消费参与的Queue只有一个时所保证的有序是整个Topic中消息的顺序, 称为全局有序。
    在这里插入图片描述

  • 分区有序
    如果有多个Queue参与,其仅可保证在该Queue分区队列上的消息顺序,则称为分区有序。
    在定义Producer时指定实现了MessageQueueSelector接口的消息队列选择器;在定义选择器的选择算法时,一般需要使用选择key,这个key是自定义的不可重复的。
    顺序选择算法:取模算法,让选择器key(或其hash值)与该Topic所包含的Queue的数量取模,其结果即为选择出的Queue的QueueId。如出现相同的QueueId,则从消息中获取到选择key,对其进行判断,若是当前Consumer需要消费的消息,则直接消费,否则,什么也不做。这种做法要求选择key要能够随着消息一起被Consumer获取到。
    在这里插入图片描述

三.延时消息

	当消息写入到Broker后,在指定的时长后才可被消费处理的消息,称为延时消息。

四.事务消息

  • TC(Transaction Coordinator),事务协调者
    维护全局和分支事务的状态,驱动全局事务提交或回滚。RocketMQ中Broker充当着TC。
  • TM(Transaction Manager),事务管理器
    定义全局事务的范围:开始全局事务、提交或回滚全局事务。它实际是全局事务的发起者。RocketMQ中事务消息的Producer充当着TM。
  • RM(Resource Manager),资源管理器
    管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。RocketMQ中事务消息的Producer及Broker均是RM。
    在这里插入图片描述
  1. TM向TC发起指令,开启一个全局事务。
  2. 根据业务要求,各个TC会通知RM注册分支事务,然后TC会逐个向RM发出预执行指令。
  3. 各个RM在接收到指令后会在进行本地事务预执行。
  4. RM将预执行结果Report给TC。当然,这个结果可能是成功,也可能是失败。
  5. TC在接收到各个RM的Report后会将汇总结果上报给TM,根据汇总结果TM会向TC发出确认指令。若所有结果都是成功响应,则向TC发送Global Commit指令。只要有结果是失败响应,则向TC发送Global Rollback指令。
  6. TC在接收到指令后再次向RM发送确认指令。

五.死信队列

一条消息初次消费失败,消息队列会自动进行消费重试;达到最大重试次数后,若消费依然失败,则将其发送到该消费者对应的死信队列中,其中的消息则称为死信消息。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jming956

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值