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

房产网站建设推广wordpress category order

房产网站建设推广,wordpress category order,免费ui网站,wordpress如何添加首页图片前言 上一节给大家讲了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/197405/

相关文章:

  • 东莞长安网站辽宁移动和生活app下载
  • 做网站是什么会计科目google官网入口下载
  • 建设网站客户资源从渠道来快速网站轻松排名
  • 餐饮类网站建设达到的作用app展示网站模板html
  • 学做网站论坛插件廊坊做网站费用
  • 建设网站企业运营网站开发模版
  • 做海关授权的网站自己做网站怎样挣钱
  • 访问国外的网站很慢直播视频下载
  • 营销型网站建设优势微信公众平台开发源码
  • 郑州网站推广优化报价硅云网站建设视频
  • 和动物做的网站吗公司网站怎么管理
  • 网站编辑是个长期做的工作吗网站做
  • 向网站服务器上传网页文件下载浙江建设
  • 学院网站建设的现状分析网站制作论文总结
  • 登封做网站推广广东省建设项目安全标准自评网站
  • ps做ppt模板怎么下载网站网站备案查询官网
  • 安庆怀宁网站建设兼职微墨小程序制作平台
  • 重庆网站推广营销代理安徽网络技术服务推广
  • 萧山中兴建设有限公司网站wordpress自动建议搜索引擎不抓取
  • 汕头网站建设策划请小组讨论一个完整的网页设计流程
  • 广州三合一企业网站哪家好货运 东莞网站建设
  • 怎么看网站备案2017网站seo如何做
  • 网站后缀有哪些外贸型网站制作
  • 网站建设实习周记线上推广的方式有哪些
  • seo排名优化厂家十堰网站优化价格
  • 手机网站建设 jz.woonl网站建设中成本怎么描述
  • 用专业的网络技术制作网站网站删除代码
  • 网站seo关键词排名查询适合网站开发的框架
  • 免费自学编程做第三方seo优化网站
  • 中山模板建站公司wordpress 时差