10.RocketMQ之消息发送分类+消息的堆积与延迟+消息清理

一、消息发送分类

  1. 同步消息:请添加图片描述
  2. 异步消息:请添加图片描述
  3. 单向发送消息:不等待Broker返回ACK,效率高,可靠性低。
    请添加图片描述

代码示例:

  1. 同步生产者: https://gitee.com/anilnak/rocket-mq/tree/dev/1.0.0请添加图片描述
  2. 异步生产者: https://gitee.com/anilnak/rocket-mq/tree/dev/2.0.0
    请添加图片描述
  3. 单向发送消息: https://gitee.com/anilnak/rocket-mq/tree/dev%2F3.0.0/请添加图片描述
  4. 消费者消费消息实例代码: https://gitee.com/anilnak/rocket-mq/tree/dev%2F4.0.0/请添加图片描述

二、顺序消息

严格按照消息的发送顺序进行消费(FIFO)。
正常情况下生产者将消息发送到不同Queue,如果消息仅发送到同一个Queue,消费时也从这一个Queue中拉取消息,保证了消息的顺序性。
策略:将相同业务标识的消息放在同一个队列中,通过一定策略(例如一个线程独立处理一个queue)保证消费的顺序性。
有序性分类:全局有序、分区有序
1)全局有序:整个topic只有一个queue
设置queue数量:在可视化控制台中手动创建topic时指定、写代码时方法设置、使用mqadmin命令手动创建
2)分区有序:保证在该Queue分区队列上的顺序。
请添加图片描述
如何实现Queue的选择:在定义producer时可以指定消息队列选择器,选择器自己实现了MessageQueueSelector接口定义,定义选择器的选择算法时,需要使用选择key,选择key可以是消息key,也可以是其他key,只要唯一就可以。
一般性选择算法:选择key(或其hash值)与Topic所包含的Queue数量取模,结果为选择key的queueId。
取模算法问题:不同选择key与Queue数量取模结果可能会相同。解决:使用消息key。
代码示例: https://gitee.com/anilnak/rocket-mq/tree/dev%2F5.0.0/
请添加图片描述

三、延迟消息

消息写入到broker后,指定时长再消费,可以实现定时任务,无需使用定时器。例如订单支付超时取消订单。
延迟等级:不支持随意时长延迟,需要特定的延迟等级来指定。延迟等级在RocketMQ的MessageStoreConfig中 。请添加图片描述
等级为3则延长10s。
如果需要自定义的延时等级,可以通过broker加载的配置中增加。请添加图片描述
投递时间 = 消息存储时间 + 延迟时间
代码示例: https://gitee.com/anilnak/rocket-mq/tree/dev/6.0.0
请添加图片描述
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值