首页 > 其他分享 >RocketMQ发布订阅和定时消息

RocketMQ发布订阅和定时消息

时间:2022-10-07 11:44:25浏览次数:46  
标签:订阅 Pull Broker 模式 消息 定时 RocketMQ

发布订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都将得到通知。

RocketMQ的消息订阅分为两种模式:

  • Push模式(MQPullConsumer): Broker 主动向消费者推送。
  • Pull模式(MQPushConsumer): 消费者在需要消息时,主动到Broker拉取。

但是,在RocketMQ中,具体实现时,Push和Pull模式都是采用消费端主动从Broker拉取消息。

RocketMQ订阅模式实现原理

  • Push(推模式)

  • Pull(拉模式)

Pull方式里,取消息的过程需要用户自己写。

首先通过打算消费的Topic拿到MessageQueue的集合,遍历MessageQueue集合。

然后针对每个MessageQueue批量取消息,一次取完后,记录该队列下一次要去的开始offset(__consumer_offset),直到取完了,再换另一个MessageQueue。

定时消息

定时消息是指消息发送到Broker后,不能立刻被Consumer消费,要到特定的时间或者等待特定的时间后才能被消费。

如果要支持任意的时间精度,在Broker层面,必须要做消息排序,如果再涉及到持久化,那么消息排序要不可避免的产生巨大性能开销。

RocketMQ支持定时消息,但是不支持任意时间精度,支持特定的Level,例如定时5s,10s,1m等。

Broker定时消息发送逻辑

标签:订阅,Pull,Broker,模式,消息,定时,RocketMQ
From: https://www.cnblogs.com/snail-gao/p/16759371.html

相关文章

  • rabbitmq,rocketmq消息队列可提高系统可用性以及可扩展性
     rabbitmq,rocketmq消息队列可提高系统可用性以及可扩展性  一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实......
  • Spring Boot 2.x基础教程:使用Elastic Job实现定时任务
    上一篇,我们介绍了如何使用SpringBoot自带的@Scheduled注解实现定时任务。文末也提及了这种方式的局限性。当在集群环境下的时候,如果任务的执行或操作依赖一些共享资源的话......
  • [答疑]定时刷新带电状态和潮流信息
    ​​软件方法(下)分析和设计第8章分析之分析类图——知识篇(20211227更新)​​​​软件方法(下)分析和设计第9章分析之分析类图——案例篇(20211228更新)​​问题时间:2014/4/27......
  • Spring Boot 2.x基础教程:使用@Scheduled实现定时任务
    我们在编写SpringBoot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。创建定时任务在SpringBoo......
  • ubuntu linux定时任务
    最近开发需要定时任务教程一大片,就不写了。我看了网上的教程启动、停止、重启。命令是:sudoservicecrondstart/stop/restart可是我服务器提示我没有这个service。......
  • android之定时器AlarmManager .
     果图:      当我们点击定时时,会弹出一个时间选择器,选定好时间之后,系统便可以进行定时了。注意,这里可不是会真的响铃,我们在定时的任务里并没有......
  • rocketmq安装
    按照网上教程下载配置环境变量,安装目录不要有空格启动:startmqnamesrv.cmdstartmqbroker.cmd-n127.0.0.1:9876autoCreateTopicEnable=true遇到问题:java11有些参......
  • rocketmq工作原理
    1.消息的生产过程消息生产过程,经历如下过程:1.向NameServer发出获取消息Topic的路由信息的请求2.nameServer返回该Topic的路由表以及Broker列表3.Producer根据代码中指定的Q......
  • 读书郎平板定时截图监控平板屏幕内容
    现在学生经常需要平板上网课,读书郎家长端有监控平板平板的功能,但是频繁手动操作,也不方便。就用appium实现定时去抓取一下平板使用情况。经过一天的时间,终于实现稳定、定时......
  • Asp-Net-Core开发笔记:集成Hangfire实现异步任务队列和定时任务
    前言最近把Python写的数据采集平台往.NetCore上迁移,原本的采集任务使用多进程+线程池的方式来加快采集速度,使用Celery作为异步任务队列兼具定时任务功能,这套东西用着还行......