前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kafka 多线程消费记录

kafka 多线程消费记录

作者头像
小石头
发布2022-11-10 21:37:54
2880
发布2022-11-10 21:37:54
举报
文章被收录于专栏:小石头小石头

Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

在很典型的功能业务场景中使用kakfa 消费上游处理结果消息,当做一个消费中间件,处理完毕后sink 到下一流程

在使用的途中,我们需要了解kafka 对应的消息处理策略以及为了避免消息堆积,多线程消费如何进行处理,以及一致性保证问题。

在策略上本次处理考虑使用批量消息拉取,在配置文件中进行设置,在factory中进行设置并行数。

首先设置分区数为3(可使用 cli 工具,或者kafka admin 客户端api调用创建分区):

3分区

注意并行数最好和topic 分区数一一对应,如果partition 数量多于并发数,每个consumer 轮询分区来进行消费,如果并发数多于partition,则会造成资源浪费,多出来的consumer会处于闲置状态。

ack提交策略设置为 MANUAL_IMMEDIATE ,处理逻辑为处理完之后再进行ack 手动提交,如果使用RECORD方式,在程序挂掉的时候可能会造成消息丢失。

并行度设置

消费使用上期的kafka的策略模式。

 在handle中,由于使用的分批次拉取消息,遍历records,在每条record进行处理的时候,在线程池中手动创建一个线程,处理对应消息,当消息处理完毕后,手动ack提交offset。

handle处理

实际处理流程为,3并行度来进行每个分区的消息拉取

在处理的时候使用保证进度的顺序性,采用redis 来进行消息缓存,且避免数据库的频繁读写,当处理完成,统一写入postgre

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-1-31 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档