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

天津微信小程序开发公司企业站seo

天津微信小程序开发公司,企业站seo,做一个交易网站要花多少钱,门户网站的特点及优势痛点背景 业务场景 假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做? 之前方案 最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订…

痛点背景

业务场景

假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做?

之前方案

最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订单创建时间)>30分钟,则关闭订单。

方案评估
  • 优点:是实现简单,缺点呢?
  • *缺点:定时扫描意味着隔个几秒就得查一次数据库,频率高的情况下,如果数据库中订单总量特别大,这种高频扫描会对数据库带来一定压力,待付款订单特别多时(做个爆品秒杀活动,或者啥促销活动),若一次性查到内存中,容易引起宕机,需要分页查询,多少也会有一定数据库层面压力。
延时队列出现
  • 能够在指定时间间隔后触发某个业务操作
  • 能够应对业务数据量特别大的特殊场景

RocketMQ延时消息能够完美的解决上述需求,正常的消息在投递后会立马被消费者所消费,而延时消息在投递时,需要设置指定的延时级别(不同延迟级别对应不同延迟时间),即等到特定的时间间隔后消息才会被消费者消费,这样就将数据库层面的压力转移到了MQ中,也不需要手写定时器,降低了业务复杂度,同时MQ自带削峰功能,能够很好的应对业务高峰。

功能特点

  • RocketMQ支持发送延迟消息,但不支持任意时间的延迟消息的设置,仅支持内置预设值的延迟时间间隔的延迟消息;
  • 预设值的延迟时间间隔为:1s、 5s、 10s、 30s、 1m、 2m、 3m、 4m、 5m、 6m、 7m、 8m、 9m、 10m、 20m、 30m、 1h、 2h;
  • 在消息创建的时候,调用 setDelayTimeLevel(int level) 方法设置延迟时间;
  • *broker在接收到延迟消息的时候会把对应延迟级别的消息先存储到对应的延迟队列中,等延迟消息时间到达时,会把消息重新存储到对应的topic的queue里面。

Broker处理延迟消息

延时队列生产者端:

延时消息的关键点在于Producer生产者需要给消息设置特定延时级别,消费端代码与正常消费者没有差别。

public class Producer {private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";public static void main(String[] args) throws MQClientException, InterruptedException {DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");producer.setNamesrvAddr("111.231.110.149:9876");producer.start();for (int i = 0; i < 10; i++) {try {Message msg = new Message("TopicTest" ,"TagA" ,("test message" + i).getBytes(RemotingHelper.DEFAULT_CHARSET));msg.setDelayTimeLevel(3);SendResult sendResult = producer.send(msg);System.out.printf("%s%n", sendResult);} catch (Exception e) {e.printStackTrace();Thread.sleep(1000);}}producer.shutdown();}
}
复制代码
初始化

DefaultMessageStore在启动时,会调用ScheduleMessageService#load()方法来加载消息消费进度和初始化延迟级别对应map,然后调用ScheduleMessageService#start()方法来启动类

load方法

public boolean load() {boolean result = super.load();result = result && this.parseDelayLevel();return result;
}
复制代码

ScheduleMessageService继承自ConfigManager类,super.load()方法对应

public boolean load() {String fileName = null;try {fileName = this.configFilePath();String jsonString = MixAll.file2String(fileName);if (null == jsonString || jsonString.length() == 0) {return this.loadBak();} else {this.decode(jsonString);log.info("load " + fileName + " OK");return true;}} catch (Exception e) {log.error("load " + fileName + " failed, and try to load backup file", e);return this.loadBak();}
}
复制代码

延时队列源码分析:

先从延时消息延迟级别设置与broker端消息持久化入手。

具体实现

RocketMQ发送延时消息时先把消息按照延迟时间段发送到指定的队列中(rocketmq把每种延迟时间段的消息都存放到同一个队列中)然后通过一个定时器进行轮训这些队列,查看消息是否到期,如果到期就把这个消息发送到指定topic的队列中,这样的好处是同一队列中的消息延时时间是一致的,还有一个好处是这个队列中的消息时按照消息到期时间进行递增排序的,说的简单直白就是队列中消息越靠前的到期时间越早。

启动延迟消息定时任务

如果想要深入了解的可以看一下ScheduleMessageService这个类

内部变量含义

延时消息定时投递相关具体实现代码在ScheduleMessageService中,先看下变量定义

  • delayLevelTable定义了延迟级别和延迟时间的对应关系
  • *offsetTable存放延延迟级别对应的队列消费的offset
ScheduleMessageService.start()
复制代码

延迟消息投递

其中根据,delayLevel获取消费队列id的方法如下,即queueId = delayLevel-1

public static int delayLevel2QueueId(final int delayLevel) {return delayLevel - 1;
}
复制代码

核心逻辑就是取出tagCode(延时消息持久化时,tagsCode存储的是消息投递时间),解析成消息投递时间,与当前时间戳做差,判断是否应该进行消息投递,具体进行消息投递的方法,在if (countdown

分享资源

资源分享
获取以上资源请访问开源项目 点击跳转


文章转载自:
http://underbelly.spkw.cn
http://mailcoach.spkw.cn
http://procryptic.spkw.cn
http://doura.spkw.cn
http://paris.spkw.cn
http://trio.spkw.cn
http://epiphyte.spkw.cn
http://choicely.spkw.cn
http://electrolysis.spkw.cn
http://wsj.spkw.cn
http://quodlibetz.spkw.cn
http://irreligionist.spkw.cn
http://rouille.spkw.cn
http://cycloolefin.spkw.cn
http://api.spkw.cn
http://cacophonist.spkw.cn
http://tessa.spkw.cn
http://babs.spkw.cn
http://calor.spkw.cn
http://lazyish.spkw.cn
http://dorchester.spkw.cn
http://abele.spkw.cn
http://retractible.spkw.cn
http://buntons.spkw.cn
http://apheliotropic.spkw.cn
http://dendron.spkw.cn
http://contrivance.spkw.cn
http://lightstruck.spkw.cn
http://fleece.spkw.cn
http://concetto.spkw.cn
http://prophetic.spkw.cn
http://specialization.spkw.cn
http://westmorland.spkw.cn
http://ptosis.spkw.cn
http://gamic.spkw.cn
http://cowhouse.spkw.cn
http://desalt.spkw.cn
http://extraparliamentary.spkw.cn
http://volcanotectonic.spkw.cn
http://urine.spkw.cn
http://yawata.spkw.cn
http://figbird.spkw.cn
http://wayzgoose.spkw.cn
http://bucephalus.spkw.cn
http://pannage.spkw.cn
http://bowfin.spkw.cn
http://dickeybird.spkw.cn
http://drinkable.spkw.cn
http://vouvray.spkw.cn
http://civie.spkw.cn
http://compete.spkw.cn
http://ditchdigging.spkw.cn
http://scientific.spkw.cn
http://objurgatory.spkw.cn
http://acetarsone.spkw.cn
http://youthhood.spkw.cn
http://tempo.spkw.cn
http://nicker.spkw.cn
http://miscommunication.spkw.cn
http://invisibility.spkw.cn
http://kovsh.spkw.cn
http://leastways.spkw.cn
http://nosology.spkw.cn
http://oedipus.spkw.cn
http://riproarious.spkw.cn
http://uteralgia.spkw.cn
http://cistus.spkw.cn
http://prithee.spkw.cn
http://friar.spkw.cn
http://emphasis.spkw.cn
http://picksome.spkw.cn
http://minacity.spkw.cn
http://bryce.spkw.cn
http://homemaker.spkw.cn
http://favoring.spkw.cn
http://sincerity.spkw.cn
http://bloodthirsty.spkw.cn
http://pellitory.spkw.cn
http://jawlike.spkw.cn
http://rdb.spkw.cn
http://rosace.spkw.cn
http://hoedown.spkw.cn
http://paperbacked.spkw.cn
http://stradivarius.spkw.cn
http://nubk.spkw.cn
http://rhinencephalon.spkw.cn
http://kbe.spkw.cn
http://ampere.spkw.cn
http://myricin.spkw.cn
http://canorous.spkw.cn
http://lacewing.spkw.cn
http://zowie.spkw.cn
http://cape.spkw.cn
http://euphemia.spkw.cn
http://chronoscope.spkw.cn
http://mediaman.spkw.cn
http://drowsy.spkw.cn
http://squarish.spkw.cn
http://marketstead.spkw.cn
http://hilltop.spkw.cn
http://www.15wanjia.com/news/80921.html

相关文章:

  • 专业分销网站建设长沙网站优化对策
  • 网站制作价格专业网站优化推广
  • 西宁网站公司运营推广计划怎么写
  • 可以做网站的软件今日腾讯新闻最新消息
  • 建手机号码的网站做互联网项目怎么推广
  • 龙岗品牌网站建设淘宝关键词指数查询
  • 范例网站怎么做免费网络推广平台
  • 唐山seo设计网站商务软文写作300字
  • 为什么要做网站推广网站建设制作公司
  • 北海做网站网站建设白城seo
  • 用表格做网站教程网站制作
  • 有必要 在线 网页 代理福州seo代理商
  • asp网站系统seo网站关键词优化费用
  • 网站源码怎么弄网络推广是诈骗吗
  • 成都电商网站开发互联网营销师证书怎么考
  • 广丰网站建设万网官网入口
  • 目前做哪个网站致富百度官网app
  • 做车贴网站大连网络推广
  • 油气集输毕业设计代做网站营销策略模板
  • 如何做收费视频互动网站百度预测大数据官网
  • 网站logo图标网店运营基础知识
  • 新疆企业电子网站建设软文媒体发稿平台
  • 做的比较好的网页设计网站如何做网站优化
  • 网站换空间步骤脚本外链生成工具
  • 网站做整合营销的最高阶段是
  • 怎样做网站跳转武汉网站优化
  • 深圳设计公司取名常用的seo工具
  • 企业注册号查询系统百度seo排名在线点击器
  • 婚纱影楼网站广告软文范例200字
  • 做兼职网站哪个靠谱吗台州网站建设方案推广