kafka之延迟队列

kafka实现延迟队列思路设计
摘要由CSDN通过智能技术生成

kafka之延迟队列

一、背景

用户营销业务场景中存在大量延迟消息处理,如用户访问某物品未下单,15分钟后给该用户推送一张优惠券等,需要支持上亿用户推送,并且低延迟。现有技术方案:

  1. redis过期监听 :内存存储,不适用大数据量,并且过期删除不精确,存在惰性删除,可能改key一直没有过期;
  2. JDK自带延迟队列:单机,非分布式;
  3. rocketMQ: 延迟时长最大24小时,业务场景需要支持天以上,存储成本变大
  4. 数据库+定时任务:引入新数据库、大数据量还需要进行分库分表,并且存在延迟,对数据库压力较大
    具体可以参考:https://mp.weixin.qq.com/s/OmbyxkufVm-XzwIv_A514w

以上技术缺点和本身系统大量应用kafka中间件,吞吐量高,考虑基于kafka开发延迟队列组件,同时也不需要引入第三方中间件

二、延迟队列设计思路

设计思路来自RocketMQ延迟消息:使用rocketmq延迟消息时,服务端实际上发送到另一个topic,并通过周期任务轮询检查延迟消息是否到期,到期才转发到目标topic,达到延迟效果。
参考该思路,自建延迟消息topic,在客户端消费者消费延迟消息,检查是否到期,到期则转发到目标topic&

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kafka可以通过使用延迟操作来实现延迟队列。在Kafka中,延迟队列的实现涉及到DelayedOperation接口的使用。该接口表示延迟的操作对象,包括延迟加入、延迟心跳、延迟生产和延迟拉取等功能。 具体的实现思路可以根据需求进行设计。一种常见的设计思路是使用延迟操作对象来记录消息的延迟时间和消息内容,然后将这些延迟操作对象添加到Kafka的消息队列中。在适当的时候,Kafka会根据延迟时间将延迟操作对象转换为普通消息对象,并发送给相应的消费者。 为了实现延迟队列,可以考虑以下步骤: 1. 创建DelayedOperation接口的实现类,用于表示延迟的操作对象。 2. 在生产者端,将需要延迟处理的消息封装成延迟操作对象,然后将其发送到Kafka的消息队列中。 3. 在消费者端,监听Kafka的消息队列,并根据延迟时间判断是否将延迟操作对象转换为普通消息对象进行处理。 4. 根据具体需求,可以对延迟操作对象进行强制完成或进行超时处理。 关于Kafka实现延迟队列的更多详细信息,你可以参考延迟队列的目录概述、设计思路和实现思路部分。 参考资料: - 延迟队列实现 golang:github.com/Shopify/sarama - Docker-compose部署单机Kafka 希望以上信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [delay-queue:golang实现github.comShopifysarama实现kafka延迟幅度](https://download.csdn.net/download/weixin_42143221/15934888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Kafka 延迟队列](https://blog.csdn.net/xiamaocheng/article/details/129284585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值