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

网站备案是给什么进行备案网站开发工程师ppt

网站备案是给什么进行备案,网站开发工程师ppt,成全视频免费观看在线看厨房电视剧下载,大良网站智能推广价格引入 reset offset,即重置消费进度,一般在以下场景中使用: 需要重新消费已经消费过的消息,重置到最早位置或根据时间进行重置。消息积压,不需要消费积压的消息,重置到最新位置,使其从最新位置…

引入

reset offset,即重置消费进度,一般在以下场景中使用:

  1. 需要重新消费已经消费过的消息,重置到最早位置或根据时间进行重置。
  2. 消息积压,不需要消费积压的消息,重置到最新位置,使其从最新位置开始消费。

重置到最早、或者根据时间进行重置与消息补发的区别?
● 消息补发是将原先的消息由生产者重发一次,与区别的那边消息本质上不是同一条消息(除了消息体一样以外)。
● 重置操作是操作消费位点(offset),本质上还是消费生产者之前发送的那条消息。
源码解析

重置offset起始调用位置:

org.apache.rocketmq.tools.admin.DefaultMQAdminExt#resetOffsetByTimestamporg.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl#resetOffsetNewConcurrent

区别:
org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl#resetOffsetNewConcurrent
● 这个看看用来并发的重置消费者的offset。可以多个consumer、多个queue可以同时进行处理。
org.apache.rocketmq.tools.admin.DefaultMQAdminExt#resetOffsetByTimestamp
● 用来根据给定的时间戳来重置消费者的偏移量。

这两个入口本质上都是resetOffset,没有本质上的区别,我们以resetOffsetNewConcurrent为例,具体流程如下图:
在这里插入图片描述

  • 首先是examineTopicRouteInfo:主要是获取topic的路由信息,如果路由信息不存在,则无法进行后续操作。
  • 再者是InvokeBrokerToResetOffset:根据上一步拿到的路由信息,遍历路由,一次向broker发起调用。
  • 请求到达服务端(Broker端),判断是否是Broker端侧处理 ○ Broker端处理:
    • 前置检查(look-ahead check):判断当前BrokerRole是否正确、检验当前Topic、ConsumerGroup是否存在,不满足任意条件,直接返回。
    • 将传递过来的offset或者根据timestamp查询到的offset统一放置到queueOffsetMap中
    • assignResetOffset:将上一步的queueOffsetMap的offset放到对应的resetOffsetTable和offsetTable中。
    • 最后prepare reset result并返回response。
  • Client端处理:
    • 先执行queryOffset:查询当前topic下的group下offsetTable中是是否存储了offset信息,有就返回对应的值,没有返回-1;
    • 前置检查(look-ahead check):检查上一步返回结果consumerOffset是否为-1,为-1表示当前group不存在;检查timeStampOffset是否满足条件;满足上述所有条件将timeStampOffset/consumerOffset中较为小的值放到offsetTable中,如果是C的客户端,直接将timestampOffset放入offsetTable中。
    • 请求到达客户端后,先将对应的consumer挂起(suspend),清除ProcessQueue中的消息,在sleep 10s。
    • 再执行updateConsumeOffset:更新consumerOffset。
    • 最后再resume,继续消费。

补充:
如果是服务端重置,重置之后的offset会写入resetOffsetTable中,在后续进行拉取操作的时候会删除resetOffsetTable中对应的offset;如果queryThenEraseResetOffset中有返回值,将resetOffset作为GetMessageResult的nextBeginOffset,拉取操作用的offset。

public Long queryThenEraseResetOffset(String topic, String group, Integer queueId) {String key = topic + TOPIC_GROUP_SEPARATOR + group;ConcurrentMap<Integer, Long> map = resetOffsetTable.get(key);if (null == map) {return null;} else {return map.remove(queueId);}
}

参考:
● https://rocketmq.apache.org/
● https://github.com/apache/rocketmq

http://www.yayakq.cn/news/926378/

相关文章:

  • 网站建设工资网站做代理需要空间是多少钱
  • 团队氛围建设 网站c语言程序设计网站
  • 企业网站的在线推广方法有企业网站建设宣贯
  • 有什么教做甜品的网站英文公司网站建设
  • 泉州模板开发建站泰州制作公司网站
  • 网站有哪些后台南宁 网站建设 制作
  • server2003网站建设东莞网站建设咨询
  • 下载建设银行官方网站下载安装如何自己做网站手机
  • 山东网站定制策划荥阳网站制作
  • 网络科技有限公司和科技有限公司的区别seo计费管理系统
  • 做外贸网站一定要会英语吗网站建设成果
  • 淘宝客怎么做网站广州h5网站建设
  • php网站后台搭建丽江手机网站建设
  • 张家界网站建设app网站建设客户分析调查表文档
  • 网站制作建设哪家公司好网站开发深
  • 做网站网站需要多少钱无法登陆建设银行网站
  • 怎么建个私人网站网络营销推广公司简介
  • 杭州自助建站软件wordpress安装条件
  • 做网站每一步的是什么网络服务禁用后如何启动
  • 建立个人网站流程深圳网站开发公司h5
  • 用php做网站难吗安卓app开发框架
  • 青岛网站建设青岛新思维建筑公司发展愿景
  • 班级网站主页设计模板福田网站建设费用明细
  • 北京网站建设解决方案深圳中装建设集团有限公司
  • 四川省建设厅官方网站三内人员重庆特种作业证件查询
  • 网站添加邮件发送怎么做视频剪辑线下培训班
  • 孝感网站的建设青岛城阳网站开发
  • 浙江台州网络设计网站辽宁省城乡建设厅网站
  • 做网站九州科技用什么工具做网站视图
  • 山东网站建设app雷州网站