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

网站模板怎么修改成可视化微信小程序源码网

网站模板怎么修改成可视化,微信小程序源码网,网页在线生成app,哈尔滨网站建设策划方案RocketMQ的延迟消息实现机制非常巧妙,其核心是通过多级时间轮 定时任务 消息重投递来实现的。以下是详细实现原理: ⏰ 一、延迟消息的核心设计 预设延迟级别(非任意时间) RocketMQ不支持任意时间延迟,而是预设了18个…

RocketMQ的延迟消息实现机制非常巧妙,其核心是通过多级时间轮 + 定时任务 + 消息重投递来实现的。以下是详细实现原理:


⏰ 一、延迟消息的核心设计

  1. 预设延迟级别(非任意时间)
    RocketMQ不支持任意时间延迟,而是预设了18个固定延迟级别(1-18),每个级别对应固定延迟时间:

    // 源码中的延迟级别定义 (MessageStoreConfig类)
    private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";
    
  2. 延迟消息处理流程

    设置delayLevel
    到达延迟时间
    生产者发送延迟消息
    Broker接收
    存入SCHEDULE_TOPIC队列
    定时任务扫描
    重投递到真实Topic
    消费者消费

🔧 二、Broker端实现细节

1. 特殊主题存储
  • 所有延迟消息先存入内部主题:SCHEDULE_TOPIC_XXXX
  • 该主题包含 18个队列,每个队列对应一个延迟级别
  • 消息结构包含关键元数据:
    class Message {private String topic;      // 原始主题(如ORDER_TOPIC)private int delayLevel;   // 延迟级别(3=10秒)private long storeTimestamp; // 存储时间戳// ...其他字段
    }
    
2. 时间轮调度器(核心)
public class ScheduleMessageService extends ConfigManager {// 延迟级别对应的Timerprivate final ConcurrentMap<Integer, Timer> timerTable = new ConcurrentHashMap<>(32);// 延迟级别对应的处理队列private final ConcurrentMap<Integer, Long> offsetTable =new ConcurrentHashMap<>(32);
}
  • 每个延迟级别独立Timer:为18个级别分别创建定时器
  • 时间轮算法:使用HashedWheelTimer高效管理延迟任务
3. 消息重投递过程

当延迟时间到达时:

  1. SCHEDULE_TOPIC_XXXX的对应队列拉取消息
  2. 清除消息的delayLevel属性
  3. 将消息写入原始目标Topic
  4. 消费者此时可正常消费

⚡ 三、源码级执行流程

  1. 消息接收(Broker端):

    // DefaultMessageStore.putMessage()
    if (msg.getDelayTimeLevel() > 0) {// 修改Topic为SCHEDULE_TOPIC_XXXXtopic = ScheduleMessageService.SCHEDULE_TOPIC;// 计算目标队列:queueId = delayLevel - 1queueId = ScheduleMessageService.delayLevel2QueueId(msg.getDelayTimeLevel());
    }
    
  2. 定时扫描(每秒执行):

    // ScheduleMessageService.executeOnTimeup()
    for (int level = 1; level <= 18; level++) {long delayTimeMillis = computeDeliverTimestamp(level, storeTimestamp);if (now >= delayTimeMillis) {// 触发重投递deliverDelayedMessage(level);}
    }
    
  3. 重投递关键操作

    MessageExt msgExt = scheduleMessageIterator.next();
    // 恢复原始Topic/Queue
    MessageExtBrokerInner msgInner = rebuildMessage(msgExt);
    // 存入CommitLog(真实Topic)
    PutMessageResult result = defaultMessageStore.putMessage(msgInner);
    

📊 四、延迟级别与时间映射

延迟级别实际延迟时间对应队列ID
11秒queue0
25秒queue1
310秒queue2
430秒queue3
51分钟queue4
182小时queue17

⚠️ 五、使用注意事项

  1. 不支持任意时间延迟
    只能选择预设的18个级别(可通过修改配置扩展级别)
  2. 最大延迟时间限制
    默认最大2小时,修改需调整配置并重启Broker
  3. 精度误差
    实际延迟可能有1-2秒误差(受扫描周期影响)
  4. 资源消耗
    高并发延迟消息会显著增加Broker的CPU负载

🔄 六、生产环境优化建议

  1. 调整扫描频率(平衡精度与CPU)
    # broker.conf
    flushDelayOffsetInterval=1000  # 默认1秒,可调大到3秒
    
  2. 扩展延迟级别
    修改messageDelayLevel配置增加自定义级别:
    messageDelayLevel=1s 5s 10s 30s 1m 2m 5m 10m 30m 1h 2h 6h 12h
    
  3. 监控关键指标
    • ScheduleMessageService_* 开头的指标
    • 延迟队列积压情况(通过Admin CLI查看)

通过这种设计,RocketMQ在保证高性能的同时实现了海量延迟消息的支持。实际测试中,单Broker可处理百万级延迟消息,平均延迟误差控制在秒级以内。


文章转载自:

http://ALa78cMD.jfnLj.cn
http://qJxV940y.jfnLj.cn
http://WpiN4cul.jfnLj.cn
http://pK2maxoG.jfnLj.cn
http://l3bniZyO.jfnLj.cn
http://p9FRs9ji.jfnLj.cn
http://OUhvOTCP.jfnLj.cn
http://dBq3UTPl.jfnLj.cn
http://dd4QKX3V.jfnLj.cn
http://7PyRry35.jfnLj.cn
http://rMumkObG.jfnLj.cn
http://bGJRrpTp.jfnLj.cn
http://HFXkkz5t.jfnLj.cn
http://Gc4jwaIC.jfnLj.cn
http://p6WSyPYl.jfnLj.cn
http://bRIcoFNq.jfnLj.cn
http://gkr5BPG1.jfnLj.cn
http://R0JvEt4j.jfnLj.cn
http://t3d4P2KL.jfnLj.cn
http://xwM6K5gx.jfnLj.cn
http://dhnDompZ.jfnLj.cn
http://6fpur2py.jfnLj.cn
http://7O2JNqKL.jfnLj.cn
http://PUZZ6jck.jfnLj.cn
http://sBzFqsnP.jfnLj.cn
http://NJ3VY0mX.jfnLj.cn
http://EYdT4WZg.jfnLj.cn
http://VDuNnXd1.jfnLj.cn
http://pByOAKt0.jfnLj.cn
http://U4D5al7q.jfnLj.cn
http://www.dtcms.com/wzjs/683536.html

相关文章:

  • 贵港网站建设九江企业网站建设
  • 学校二级网站建设网站开发有哪些类型
  • 网站建设的公司做销售宣传推广方式
  • 网站入口类型xml格式文件打开都是乱码
  • 美食网站建设多少钱软件开发环境
  • 做网站是怎么收费的是按点击率wordpress 作品
  • 南山网站建设 信科网络西安行业网站建设
  • 西城网站建设浩森宇特网站开发小公司推荐
  • 花生壳可做网站吗网站建设网络推广代理公司
  • 哪个网站做的ppt模板好高手总结wordpress函数
  • 广州个人网站建设网站强制qq弹窗代码
  • 如何建设移动网站自己网站如何做关键词排名
  • 360建网站wordpress windows live writer
  • 漳州电脑网站建设虚拟展馆官方网站建设
  • 电子商务网站建设策划书范文房地产网站大全
  • 建设部网站质量终身责任承诺书织梦绿色企业网站模板
  • 做产品网站建设小程序加盟代理前景
  • 怎么看网站是否被k过怎么制作网站链接转发视频
  • saas建站平台介绍奇搜建设辽沈阳网站
  • 学校网站前置审批照片变年轻在线制作网站
  • 哪些网站做电商比较好如何制作flash网站
  • 怎么样通过做网站赚钱吗网页游戏不花钱的
  • 东莞营销网站制作你们需要网站建设
  • 娄底建设网站伊宁seo网站建设
  • 西安 网站设计做网站这么做
  • 阿里云个人备案可以做企业网站浏览器在线进入
  • 统计局门户网站建设背景做网站需要考虑哪些
  • 丰南建设网站网页版梦幻西游10月五行斗法攻略
  • wordpress 做一个视频站网站建设优化服务
  • 网站建设费用的会计核算个人互动网站