• 首页
  • 如何处理黑平台不出款
  • 黑平台怎么追回资金
  • 平台被黑不出款怎么办
  • 联系我们
  • 开通VIP发文章免审核

{{userData.name}}

个人中心
后台
{{item.count}}
{{textHint.loading}}
  • {{data.name}}({{data.count}}){{data.name}}
写文章
当前位置:首页-如何处理黑平台不出款-正文

第三方数据延迟取不了 深入理解RocketMQ延迟消息

专业出黑 专业出黑 如何处理黑平台不出款11个月前0011.64M0
延迟消息是实际开发中一个非常有用的功能,本文第一部分从整体上介绍秒级精度延迟消息的实现思路,在第二部分结合RocketMQ的延迟消息实现,进行细致的讲解,点出关键部分的源码。

延迟消息是实际开发中一个非常有用的功能,本文第一部分从整体上介绍秒级精度延迟消息的实现思路,在第二部分结合的延迟消息实现,进行细致的讲解,点出关键部分的源码。第三步介绍延迟消息与消息重试的关系。

1 延迟消息介绍

基本概念:延迟消息是指生产者发送消息发送消息后,不能立刻被消费者消费,需要等待指定的时间后才可以被消费。

场景案例:用户下了一个订单之后,需要在指定时间内(例如30分钟)进行支付,在到期之前可以发送一个消息提醒用户进行支付。

一些消息中间件的端内置了延迟消息支持的能力,如:

端内置延迟消息处理能力,核心实现思路都是一样:将延迟消息通过一个临时存储进行暂存,到期后才投递到目标Topic中。如下图所示:

步骤说明如下:

要将一个延迟消息发送到某个Topic中

判断这是一个延迟消息后,将其通过临时存储进行暂存。

内部通过一个延迟服务(delay )检查消息是否到期,将到期的消息投递到目标Topic中。这个的延迟服务名字为delay ,不同消息中间件的延迟服务模块名称可能不同。

消费者消费目标topic中的延迟投递的消息

显然,临时存储模块和延迟服务模块,是延迟消息实现的关键。上图中,临时存储和延迟服务都是在内部实现,对业务透明。

此外, 还有一些消息中间件原生并不支持延迟消息,如Kafka。在这种情况下,可以选择对Kafka进行改造,但是成本较大。另外一种方式是使用第三方临时存储,并加一层代理。

第三方存储选型要求:

对于第三方临时存储,其需要满足以下几个特点:

例如,滴滴开源的消息中间件DDMQ,底层消息中间件的基础上加了一层代理,独立部署延迟服务模块,使用进行临时存储。是一个高性能的KV存储,并支持排序。

此时对于延迟消息的流转如下图所示:

说明如下:

生产者将发送给 proxy,proxy判断是延迟消息,将其投递到一个缓冲Topic中;

delay 启动消费者,用于从缓冲topic中消费延迟消息,以时间为key,存储到中;

delay 判断消息到期后,将其投递到目标Topic中。

消费者消费目标topic中的数据

这种方式的好处是,因为delay 的延迟投递能力是独立于实现的,不需要对做任何改造,对于任意MQ类型都可以提供支持延迟消息的能力。例如DDMQ对、Kafka都提供了秒级精度的延迟消息投递能力,但是Kafka本身并不支持延迟消息,而虽然支持延迟消息,但不支持秒级精度。

事实上,DDMQ还提供了很多其他功能,仅仅从延迟消息的角度,完全没有必要使用这个proxy,直接将消息投递到缓冲Topic中,之后通过delay 完成延迟投递逻辑即可。

具体到delay 模块的实现上,也有一些重要的细节:

为了保证服务的高可用,delay 也是需要部署多个节点。

为了保证数据不丢失,每个delay 节点都需要消费缓冲Topic中的全量数据,保存到各自的持久化存储中,这样就有了多个备份,并需要以时间为key。不过因为是各自拉取,并不能保证强一致。如果一定要强一致,那么delay 就不需要内置存储实现,可以借助于其他支持强一致的存储。

为了避免重复投递,delay 需要进行选主,可以借助于、etcd等实现。只有可以通过生产者投递到目标Topic中,其他节点处于备用状态。否则,如果每个节点进行都投递,那么延迟消息就会被投递多次,造成消费重复。

要**自己当前投递到的时间到一个共享存储中,如果挂了,从slave节点中选出一个新的节点,从之前**时间继续开始投递。

延迟消息的取消:一些延迟消息在未到期之前,可能希望进行取消。通常取消逻辑实现较为复杂,且不够精确。对于那些已经快要到期的消息,可能还未取消之前,已经发送出去了,因此需要在消费者端做检查,才能万无一失。

2 中的延迟消息

开源支持延迟消息,但是不支持秒级精度。默认支持18个level的延迟消息,这是通过端的配置项确定的,如下:

messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

在启动时,内部会创建一个内部主题:,根据延迟level的个数,创建对应数量的队列,也就是说18个level对应了18个队列。注意,这并不是说这个内部主题只会有18个队列,因为通常是集群模式部署的,因此每个节点都有18个队列。

延迟级别的值可以进行修改,以满足自己的业务需求,可以修改/添加新的level。例如:你想支持2天的延迟,修改最后一个level的值为2d,这个时候依然是18个level;也可以增加一个2d,这个时候总共就有19个level。

可以看到这里并不支持秒级精度,按照《 guide》中的说法,是为了避免在对消息进行排序,造成性能影响。不过笔者考虑,之所以不支持,更多应该是商业上的考虑。

生产者发送延迟消息:

生产者在发送延迟消息非常简单,只需要设置一个延迟级别即可,注意不是具体的延迟时间,如:

Message msg=new Message();msg.setTopic("TopicA");msg.setTags("Tag");msg.setBody("this is a delay message".getBytes());//设置延迟level为5,对应延迟1分钟msg.setDelayTimeLevel(5);producer.send(msg);

如果设置的延迟level超过最大值,那么将会重置最最大值。

端存储延迟消息:

延迟消息在 端的流转如下图所示:

可以看到,总共有6个步骤,下面会对这6个步骤进行详细的讲解:

修改消息Topic名称和队列信息

转发消息到延迟主题的中

延迟服务消费消息

将信息重新存储到中

将消息投递到目标Topic中

消费者消费目标topic中的数据

第一步:修改消息Topic名称和队列信息

端在存储生产者写入的消息时,首先都会将其写入到中。之后根据消息中的Topic信息和队列信息,将其转发到目标Topic的指定队列()中。

由于消息一旦存储到中,消费者就能消费到,而延迟消息不能被立即消费,所以这里将Topic的名称修改为,并根据延迟级别确定要投递到哪个队列下。

同时,还会将消息原来要发送到的目标Topic和队列信息存储到消息的属性中。相关源码如下所示:

org...store.#

第二步:转发消息到延迟主题的中

中的消息转发到中是异步进行的。在转发过程中,会对延迟消息进行特殊处理,主要是计算这条延迟消息需要在什么时候进行投递。

投递时间=消息存储时间(storeTimestamp) + 延迟级别对应的时间

需要注意的是,会将计算出的投递时间当做消息Tag的哈希值存储到中,单个存储单元组成结构如下图所示:

其中:

相关源码参见:

#nSize

第三步:延迟服务消费消息

内部有一个ce类,其充当延迟服务,消费中的消息,并投递到目标Topic中。

ce在启动时,其会创建一个定时器Timer,并根据延迟级别的个数,启动对应数量的,每个负责一个延迟级别的消费与投递。

相关源码如下所示:

ce#start

需要注意的是,每个在检查消息是否到期时,首先检查对应队列中尚未投递第一条消息,如果这条消息没到期,那么之后的消息都不会检查。如果到期了,则进行投递,并检查之后的消息是否到期。

第四步:将信息重新存储到中

在将消息到期后,需要投递到目标Topic。由于在第一步已经**了原来的Topic和队列信息,因此这里重新设置,再存储到即可。此外,由于之前 Tag 字段存储的是消息的投递时间,这里需要重新计算tag的哈希值后再存储。

源码参见:的方法。

第五步:将消息投递到目标Topic中

这一步与第二步类似,不过由于消息的Topic名称已经改为了目标Topic。因此消息会直接投递到目标Topic的中,之后消费者即消费到这条消息。

3 延迟消息与消费重试的关系

提供了消息重试的能力,在并发模式消费消费失败的情况下,可以返回一个枚举值,那么消息之后将会进行重试。如:

consumer.registerMessageListener(new MessageListenerConcurrently() {       @Override       public ConsumeConcurrentlyStatus consumeMessage(List msgs,                                       ConsumeConcurrentlyContext context) {           //处理消息,失败,返回RECONSUME_LATER,进行重试           return ConsumeConcurrentlyStatus.RECONSUME_LATER;       }   });

重试默认会进行重试16次。使用过消息重试功能的用户,可能看到过以下这张图:

第几次重试

与上次重试的间隔时间

第几次重试

与上次重试的间隔时间

10 秒

7 分钟

30 秒

10

8 分钟

1 分钟

11

9 分钟

2 分钟

12

10 分钟

3 分钟

13

20 分钟

4 分钟

14

30 分钟

5 分钟

15

1 小时

6 分钟

16

2 小时

细心地的读者发现了,消息重试的16个级别,实际上是把延迟消息18个级别的前两个level去掉了。事实上,的消息重试也是基于延迟消息来完成的。在消息消费失败的情况下,将其重新当做延迟消息投递回。

在投递回去时,会跳过前两个level,因此只重试16次。当然,消息重试还有一些其他的设计逻辑,在之后的文章将会进行分析。

相关文章

  • 网上赢钱提款失败怎么办 被平台黑了取不了款怎么 网上被黑提款失败不给出款怎么办呢怎么解决办法

    网上赢钱提款失败怎么办 被平台黑了取不了款怎么 网上被黑提款失败不给出款怎么办呢怎么解决办法

    网上赢钱被黑提款成功不到账平台赢钱不给提款的原因有哪些?有句话说的好,十九输,其实即便你能赢钱,平台也不可能轻而易举的让你把钱拿到手,但是也是有…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0018.05M0
  • 网上赢钱被黑不给取款解决方法 遇到网上赢钱被黑不能取款了

    网上赢钱被黑不给取款解决方法 遇到网上赢钱被黑不能取款了

    1、文章侧重点在网上被谝的人实际上也是很可伶每每华灯初上看见家的方向却害怕回家了盼望可以还回大家的救命可是社会发展是绝情的他人却不…
    专业出黑 专业出黑 如何处理黑平台不出款9个月前0023.37M0
  • 网贷平台无法还款怎么办 该网贷竟然不能提前还款,导致借款人网贷逾期,遭借款人联合投诉

    网贷平台无法还款怎么办 该网贷竟然不能提前还款,导致借款人网贷逾期,遭借款人联合投诉

    当网贷快要到期时,通常借款人都会主动在还款日还款或者提前一天还款,以免造成网贷逾期的现象出现,当然,这也是正常的流程。…
    专业出黑 专业出黑 如何处理黑平台不出款8个月前0016.96M0
  • 未回传出不了 《季影帝,余生不等你了》精彩片段

    未回传出不了 《季影帝,余生不等你了》精彩片段

    季影帝,余生不等你了最新章节由网友提供,《季影帝,余生不等你了》情节跌宕起伏、扣人心弦,是一本情节与文笔俱佳的其他类型小说,爱去小说网免费提供季…
    专业出黑 专业出黑 如何处理黑平台不出款8个月前0020.22M0
  • 365提款一直在审核 网上提款365平台审核维护中一直提不了款该怎么办?揭秘

    365提款一直在审核 网上提款365平台审核维护中一直提不了款该怎么办?揭秘

    系统升级,系统维护,出款通道维护,财务清算,账号异常,注单异常,风控部门审核今天小编就来说说关于网上平台我们该怎么做才能挽回我们的损失一般黑平台…
    专业出黑 专业出黑 如何处理黑平台不出款10个月前0022.59M0
  • 平台不能提款怎么办 平台赢钱了不给提款怎么办

    平台不能提款怎么办 平台赢钱了不给提款怎么办

    核心提示:平台赢钱了不给提款怎么办,全能版下载eslaYpJWmXUedf-tuBIzAXSZVbgMsuP-vQfwSH好的制度设计是规范和保…
    专业出黑 专业出黑 如何处理黑平台不出款8个月前0023.08M0
  • 平台怎么出黑 外汇天眼:监管利剑斩黑!大批平台被曝光并列入监管黑榜

    平台怎么出黑 外汇天眼:监管利剑斩黑!大批平台被曝光并列入监管黑榜

    随着金融市场的日益繁荣,一些不法分子也趁机混入其中,企图通过设立诈骗平台来牟取不义之财。…
    专业出黑 专业出黑 如何处理黑平台不出款11个月前0017.95M0
  • 网上赢钱被黑不给出款怎么办 网上赢钱被黑平台不给提款怎么办 网上平台赌赢钱出款失败有办法追回吗,解决应对办法

    网上赢钱被黑不给出款怎么办 网上赢钱被黑平台不给提款怎么办 网上平台赌赢钱出款失败有办法追回吗,解决应对办法

    网上平台赌赢钱出款失败有办法追回吗,解决应对办法,网上平台赌赢钱出款失败有办法追回吗,解决应对办法。解决网上平台不给提出款等,Q(16⒏27⒌5…
    专业出黑 专业出黑 如何处理黑平台不出款11个月前0018.44M0
  • 网上被平台黑了怎么办 遇到黑网账号涉嫌套利不给提款…为你追回-阿莫出品

    网上被平台黑了怎么办 遇到黑网账号涉嫌套利不给提款…为你追回-阿莫出品

    第二,保存自己的账号信息,还有银行转账信息,确保账号可以正常登入第三,亏损金额在5000以上可以找我们出款,前期不收费...…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0019.43M0
  • 财务通道维护不给提款 取款通道维护系统审核不给提现出款是有

    财务通道维护不给提款 取款通道维护系统审核不给提现出款是有

    1、文章开头语网上黑平台提示恶意刷水套利提现失败怎么办碰到这种被黑的情况只有,也就是被谝来的,我们要保护自己的权利,一定要想办法解决追回来,不管…
    专业出黑 专业出黑 如何处理黑平台不出款8个月前0020.32M0
  • 网络平台风控审核不给出款怎么办 不存在逾期网贷申请太多被秒拒,过多未逾期网贷申请引起秒拒,应怎样避免?

    网络平台风控审核不给出款怎么办 不存在逾期网贷申请太多被秒拒,过多未逾期网贷申请引起秒拒,应怎样避免?

    网贷申请太多没逾期被秒拒1.网贷行业是近年来迅猛发展的数据金融领域,借助互联网技术,方便了多人的个月资金周转需求。随着网贷行业的客户火爆,申请…
    专业出黑 专业出黑 如何处理黑平台不出款11个月前0015.98M0
  • 被黑了怎么办? 微信转账后被拉黑怎么办?打开手机这个功能,一招教你挽回损失!

    被黑了怎么办? 微信转账后被拉黑怎么办?打开手机这个功能,一招教你挽回损失!

    微信,已经不仅仅是聊天工具,有时候我们会通过微信给他人转账,手指一点,转账付款完成。…
    专业出黑 专业出黑 如何处理黑平台不出款7个月前0027.42M0

最新文章

  • 平台系统维护提不了款怎么办 曝某借贷平台涉高利贷陷阱用户权益难维护
  • 在线ai绘画生成软件 4款国内免费ai绘画软件,无限制无审核,巨好玩! - 哔哩哔哩
  • 利用chatgpt进行高考志愿填报 选择计算机专业,后悔莫及?大学老师:高考志愿填报慎选!
  • 在线ai绘画生成软件 7款免费的ai绘画生成器推荐,ai自动生成绘画 - 哔哩哔哩
  • 互联网流量怎么挣钱 流量变现的又一暴利项目,新手可做每天赚500
  • 在线ai绘画生成软件 收藏这18款免费ai绘画软件,轻松掌握ai绘画在线生成图片! - 哔哩哔哩
  • 网上被黑不给提怎么解决 在网上的平台说数据延时提现不了
  • 阿里版chatgpt怎么申请 中国版ChatGPT会是谁?ChatGPT本尊回应了
  • 网上被黑不给提怎么解决 网上提款审核失败,网上被黑提款风控审核失败不给提款怎么解决?可以这样操作
  • 人工智能chatgpt4.0能打游戏吗 超星尔雅《人工智能》章节测验答案
  • 被平台黑了不能取款怎么办 网上被黑平台不让提现困扰您?正确解决方法来帮您一臂之力
  • 如何让chatgpt写完完整代码 用DeepSeek全自动写代码
  • 被平台黑了不能取款怎么办 网上遇到被黑了不能提款怎么办(以下几点教你解决)
  • 如何让chatgpt对文档内容进行整理 原来 ChatGPT 可以这样用:根据个人需求订做一周健康菜单
  • 如何让chatgpt写完完整代码 ChatGPT史诗级大更新!Canvas来了,可辅助完成编程、写作
  • 赢钱被黑网站一直不给提款怎么解决 “警醒”streamingapp是新型诈骗软件,违规操作错为不给提现怎么办
  • 如何让chatgpt对文档内容进行整理 ChatGPT“成人模式”:AI新世界的潘多拉魔盒?
  • 人民币 特别提款权 人民币SDR权重上调至12.28%,有什么作用?专家解读
  • 发货软件哪个好 发货单软件免费版

没有相关内容

Copyright © 2022-至今 被平台黑了取不了款怎么出黑•现在最火的免费发帖推广平台网站 陕ICP备2023010157号
42 次查询在 1.666 秒, 使用 41.39MB 内存