当前位置: 首页 > news >正文

荆门网站建设514885南昌seo网站推广费用

荆门网站建设514885,南昌seo网站推广费用,wordpress onclick,搜索热度和搜索人气前言 上一节给大家讲了Rocket的顺序消息#xff0c;这一节和大家聊一下延迟消息#xff0c;关于顺序消息大家可以点下面这个链接直接看 RocketMQ的延迟消息 延迟消息 延迟消息就是指生产者发送消息之后#xff0c;消息不会立马被消费#xff0c;而是等待一定的时间之后…前言 上一节给大家讲了Rocket的顺序消息这一节和大家聊一下延迟消息关于顺序消息大家可以点下面这个链接直接看 RocketMQ的延迟消息 延迟消息 延迟消息就是指生产者发送消息之后消息不会立马被消费而是等待一定的时间之后再被消息 RocketMQ的延迟消息用起来非常简单只需要在创建消息的时候指定延迟级别之后这条消息就成为延迟消息了 Message message  new Message(sanyouTopic, java日记 0.getBytes()); //延迟级别 message.setDelayTimeLevel(1);虽然用起来简单但是背后的实现原理还是有点意思我们接着往下看 RocketMQ延迟消息的延迟时间默认有18个级别不同的延迟级别对应的延迟时间不同 RocketMQ内部有一个Topic专门用来表示是延迟消息的叫SCHEDULE_TOPIC_XXXXXXXX不是占位符就是XXXX RocketMQ会根据延迟级别的个数为SCHEDULE_TOPIC_XXXX这个Topic创建相对应数量的队列 比如默认延迟级别是18那么SCHEDULE_TOPIC_XXXX就有18个队列队列的id从0开始所以延迟级别为1时对应的队列id就是0为2时对应的就是1依次类推 那SCHEDULE_TOPIC_XXXX这个Topic有什么作用呢 这就得从消息存储时的一波偷梁换柱的骚操作了说起了 当服务端接收到消息的时候判断延迟级别大于0的时候说明是延迟消息此时会干下面三件事 将消息的Topic改成SCHEDULE_TOPIC_XXXX 将消息的队列id设置为延迟级别对应的队列id 将消息真正的Topic和队列id存到前面提到的消息存储时的额外信息中 之后消息就按照正常存储的步骤存到CommitLog文件中 由于消息存到的是SCHEDULE_TOPIC_XXXX这个Topic中而不是消息真正的目标Topic中所以消费者此时是消费不到消息的 举个例子比如有条消息Topic为sanyou所在的队列id 1延迟级别 1那么偷梁换柱之后的结果如下图所示 代码如下 所以从上分析可以得出一个结论 所有RocketMQ的延迟消息最终都会存储到SCHEDULE_TOPIC_XXXX这个Topic中并且同一个延迟级别的消息在同一个队列中 在存消息偷梁换柱之后实现延迟消费的最关键的一个步骤来了 BocketMQ在启动的时候除了为每个延迟级别创建一个队列之后还会为每个延迟级别创建一个延迟任务也就相当于一个定时任务每隔100ms执行一次 这个延迟任务会去检查这个队列中的消息有没有到达延迟时间也就是不是可以消费了 前面的结论每个队列都有一个ConsumeQueue文件可以通过ConsumeQueue找到这个队列中的消息 一旦发现到达延迟时间可以消费了此时就会从这条消息额外存储的消息中拿到真正的Topic和队列id重新构建一条新的消息将新的消息的Topic和队列id设置成真正的Topic和队列id内容还是原来消息的内容 之后再一次将新构建的消息存储到CommitLog中 由于新消息的Topic变成消息真正的Topic了所以之后消费者就能够消费到这条消息了 所以从整体来说RocketMQ延迟消息的实现本质上就是最开始消息是存在SCHEDULE_TOPIC_XXXX这个中转的Topic中 然后会有一个类似定时任务的东西不停地去找到这个Topic中的消息 一旦发现这个消息达到了延迟任务说明可以消费了那么就重新构建一条消息这条消息的Topic和队列id都是实际上的Topic和队列id然后存到CommitLog 之后消费者就能够在目标的Topic获取到消息了 总结 RocketMQ的延迟消息是一种特殊的消息类型当消息写入到Broker后不能立刻被消费者消费需要等待指定的时长后才可被消费处理。这种消息的延迟时长不支持随意时长的延迟是通过特定的延迟等级来指定的。RocketMQ默认支持18个等级的延迟消息延时等级定义在RocketMQ服务端的MessageStoreConfig类中的特定变量中。 在实际应用中不使用定时器利用RocketMQ的延迟消息可以实现定时任务的功能适用于一些特定的场景如电商交易系统的订单超时未支付自动取消订单等。 其实现原理主要是消息在RocketMQ Broker端的流转过程中对延迟消息进行特殊处理计算这条延迟消息需要在什么时候进行投递。投递时间等于消息存储时间加上延迟级别对应的时间。 联系方式 关于文章中大家有任何疑问可以通过关注公众号《编程乐学》进行留言同时公众号还有更多有趣的项目以及关于学习编程的笔记资料大家可以看看欢迎大家进行留言。
http://wiki.neutronadmin.com/news/17255/

相关文章:

  • 导购网站开发要多少钱横山桥网站
  • 淘宝网站做超链接智能软件开发专业
  • 开源网站统计建设局特种作业网站
  • 免费漫画网站江苏省宝应城市建设有限公司网站
  • 网站手机版怎么弄太原有哪些做网站的公司
  • 罗田县住房和城乡建设局网站seo是什么意思啊
  • 上海松江区做网站的公司小米发布会完整版
  • 帝国做网站东莞seo网络公司
  • 网站备案之后设计网站需要用到哪些技术
  • 网站规划设计内容有哪些网站要怎么做才能获得市场份额
  • 台州做网站的电话tp5企业网站开发
  • 做网站 怎么赚钱吗WordPress使用sentcloud
  • 网站的建设与运营专业做saas网站可行吗
  • 云南放心seo整站优化6617网址导航彩票网站大全
  • 网站如何做的看起来高大上如何建设国外网站
  • 中文wordpress网站模板下载网站开发主流方法
  • 平台下载素材网站开发腾讯云安装wordpress
  • 网站关键词排名seo自己怎么开发游戏软件
  • 为什么用php做网站wordpress在线评论
  • 香橼做空机构网站深圳极速网站建设服务器
  • 怎么制作视频网站域名网站教程
  • 山东响应式网站建设好的互联网资讯网站
  • 大同网站建设优化推广wordpress一键迁移
  • vps网站管理助手wordpress上传插件
  • 中山有哪些网站建立公司wordpress 电话登记插件
  • 深圳网站开发工资wordpress 艺术 主题 2018
  • 石城网站建设闪灵企业建站系统
  • 网站建设容易学吗外国人做的篆字网站
  • 焦作整站优化权威的南通网站建设
  • 家具建设网站锡林郭勒盟建设厅官方网站