Kafka系列之:延时队列

这篇具有很好参考价值的文章主要介绍了Kafka系列之:延时队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、延时队列概念和使用场景

  • 队列是存储消息的载体,延时队列存储的对象是延时消息。所谓的延时消息是指消息被发送以后,并不想让消费者立刻获取,而是等待特定的时间后,消费者才能获取这个消息进行消费,延时队列一般也被称为延迟队列。
  • 延时与TTL的区别:延时的消息达到目标延时时间后才能被消费,而TTL的消息达到目标超时时间后会被丢弃。

延时队列的使用场景有很多,比如:文章来源地址https://www.toymoban.com/news/detail-613738.html

  • 在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么订单将进行异常处理,这时就可以使用延时队列来处理这些订单了。
  • 订单完成1小时后通知用户进行评价。
  • 用户希望通过手机远程遥控家里的智能设备在指定时间进行工作。就可以将用户指令发送到延时队列,当指令设定的时间到了之后再将它推送到智能设备。

二、延时队列实现方案

  • 在发送延时消息的时候并不是先投递到要发送的真实主题中,而是先投递到要发送的真实主题中real_topic中,而是先投递到一些kafka内部的主题delay_topic中,这些内部主题对用户不可见,然后通过一个自定义的服务拉取这些内部主题中的消息,并将满足条件的消息再投递到要发送的真实的主题中,消费者所订阅的还是真实的主题。
  • 按照不同的延时等级来划分,比如设定5s、10s、30s、1min、2min、5min、10min这些按延时时间递增的延时等级,延时的消息按照延时时间投递到不同等级的主题中,投递到同一主题中的消息的延时时间差范围之内(比如延时时间为17s的消息投递到30s的延时主题中,之后按照延时时间为30s进行计算,延时误差为13s)。虽然有一定的延时误差,但是误差可控,并且这样只需要增加少许的主题就能实现延时队列的功能。

到了这里,关于Kafka系列之:延时队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot kafka 实现延时队列

    好文推荐: 2.5万字详解23种设计模式 基于Netty搭建websocket集群实现服务器消息推送 2.5万字讲解DDD领域驱动设计 延时队列:是一种消息队列,可以用于在指定时间或经过一定时间后执行某种操作。 小编已经做好了 Kafka延时队列的封装,以后只需要一行代码就可以实现kafka延时

    2024年02月03日
    浏览(39)
  • Kafka延迟队列的实现方式

    在现代的分布式系统中,延迟队列是一种常见的解决方案,用于处理具有延迟要求的任务或消息。Apache Kafka是一个高性能、可扩展的分布式消息队列,可以作为延迟队列的基础设施。本文将介绍如何使用Kafka实现延迟队列,并提供详细的Java示例。 延迟队列是一种特殊的消息队

    2024年02月13日
    浏览(31)
  • Kafka--延迟队列--使用/实现/原理

    原文网址:Kafka--延迟队列--使用/实现/原理_IT利刃出鞘的博客-CSDN博客 本文介绍Kafka如何使用延迟队列的功能。 Kafka是很常用的消息队列,但Kafka本身是没有延迟队列功能的(RabbitMQ、RocketMQ有延迟队列功能)。本文介绍如何手动给Kafka添加延迟消息的功能。 虽然Kafka内部有时间

    2023年04月08日
    浏览(35)
  • springboot~kafka中延时消息的实现

    用户下单5分钟后,给他发短信 用户下单30分钟后,如果用户不付款就自动取消订单 kafka本身没有这种延时队列的机制,像rabbitmq有自己的死信队列,当一些消息在一定时间不消费时会发到死信队列,由死信队列来处理它们,上面的两个需求如果是rabbitmq可以通过死信队列实现的

    2024年02月12日
    浏览(82)
  • kafka实现延迟消息

    我们知道消息中间件mq是支持延迟消息的发送功能的,但是kafka不支持这种直接的用法,所以我们需要独立实现这个功能,以下是在kafka中实现消息延时投递功能的一种方案 主要的思路是增加一个检测服务,这个检测服务会每分钟定时从延时队列中获取消息,然后判断这些延迟

    2024年04月26日
    浏览(30)
  • Kafka消息延迟处理技巧,降低错误率

    Kafka消息延迟处理技巧是指在消费者正常消费Kafka消息的同时,根据消息的业务特性,对某些消息进行延迟处理,延迟时间可以是一定时间间隔或者指定时间点,以达到优化业务流程的目的。 消息延迟处理技巧常被用于以下场景: 对于一些业务关键消息,需要确保其被及时正

    2024年02月09日
    浏览(46)
  • kafka延时队列原理,Java开发中遇到最难的问题

    Dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么? Dubbo 的整体架构设计有哪些分层? 什么是 Spring Boot?以及Spring Boot的优劣势? 你如何理解 Spring Boot 中的 Starters? 服务注册和发现是什么意思?Spring Cloud 如何实现? Spring Cloud断路器的作用

    2024年03月21日
    浏览(46)
  • Kafka消息延迟和时序性详解(文末送书)

    大家好,我是哪吒。 文末送5本《从零开始学架构:照着做,你也能成为架构师》 1.1 介绍 Kafka 消息延迟和时序性 Kafka 消息延迟和时序性对于大多数实时数据流应用程序至关重要。本章将深入介绍这两个核心概念,它们是了解 Kafka 数据流处理的关键要素。 1.1.1 什么是 Kafka 消

    2024年02月04日
    浏览(44)
  • 【Kafka】消息队列Kafka进阶

    生产者分区写入策略 生产者写入消息到 topic,Kafka 将依据不同的策略将数据分配到不同的分区中。 轮询分区策略 随机分区策略 按key分区分配策略 自定义分区策略 轮询策略   默认的策略,也是使用最多的策略,可以最大限度保证所有消息平均分配到一个分区。如果在生产

    2024年02月15日
    浏览(43)
  • 【Kafka】消息队列Kafka基础

      消息队列,经常缩写为MQ。从字面上来理解,消息队列是一种用来存储消息的队列。例如Java中的队列:   上述代码,创建了一个队列,先往队列中添加了一个消息,然后又从队列中取出了一个消息。这说明了队列是可以用来存取消息的。我们可以简单理解消息队列就是

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包