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

Kafka 文件消费处理 + 文本切割

Kafka 业务逻辑

  • 通过@KafkaListener 注解监听 Kafka 主题,检测到该主题有要处理的任务,会自动调用 processTask 该方法并且传入要处理的类 task,对文件开始处理
  • 在 MinIO 中进行文件合并之后会产生预签名URL, 在 Kafka 中通过这个 URL 下载文件并且转换成可缓存流,对该文件进行解析

文本切割业务逻辑

  • 先进行JVM虚拟机的内存检查
  • 创建 BufferedInputStream 对象用来缓冲数据
  • 创建流程内部处理器,处理父块的切分和子块的分片存储

流式处理器StreamingContentHandler

  • 继承了 BodyContentHandler ,内部有一个 StringBuffer ,通过 characters 方法不断向 buffer 中积累文本,当长度达到 1MB 字节长度,进行子块处理。当文档最后剩余的不足 1MB 的时候,在 endDocument方法中处理,也直接进入子块处理
  • 子块处理,先是按照段落通过换行符分割获得字符串数组,然后循环遍历。有一个 currentChunk 用来不断追加累计文本,子块规定大小 chunkSize 是 512 字节。遍历时如果遍历的这个段落本身就已经大于 chunkSize, 那么对段落进行句子分割;如果遍历的这个段落+currentChunk大于 chunkSize,就先把这个buffer保存到 List chunks,再把这个段落 new 一个新的 buffer 对象;如果不大于 chunkSize 就直接添加
  • 对段落按照句子进行分割,首先按照标点符号用正则表达式分开,如果某个句子特别长超过 chunkSize,按照词进行分割,使用HanLP智能分割超长句子,中文按语义切割,最后兜底方案如果分词失败了按照字符进行分割

BufferedInputStream 缓冲区

  • 减少底层 I/O 次数,缓冲区就像是一个水杯去水龙头(磁盘/网络资源)接了一杯,不用一滴一滴的去水龙头接,减少频繁交换
  • 调用 read() 方法会检查缓存区是否有数据,如果没有就从底层交互,默认 8192字节也就是 8KB 字节大小
  • 防止OOM,设置缓存区能避免一次把所有数据全部读入到内存,超出 JVM 内存限制,要分块读入

JVM 内存检测

  • Runtime 类能获得 JVM信息,maxMemory()是JVM 最大内存,可通过 -Xmx 设置, totalMemory()是JVM 根据需求想操作系统申请到的内存资源,freeMemory()还未使用的空间
  • 计算内存的使用率,如果超过 80% 手动进行一次 GC,再次计算内存使用情况,如果再次超过,抛出异常内存不足
http://www.jsqmd.com/news/370421/

相关文章:

  • 2026年大润发卡回收平台哪家好?选择指南与操作建议 - 京回收小程序
  • 微算法科技(NASDAQ: MLGO)基于量子技术的区块链架构:量子原生验证模型与分布式账本革新
  • 2026年全国包装公司推荐,分析代代旺包装的产品质量能达标吗 - 工业品牌热点
  • K8s AIOps 一体化小系统(完整代码)
  • 中国十大老字号药企推荐:传承百年匠心,守护全民健康 - 包罗万闻
  • 探讨控制消防机器人遥控器价格及靠谱公司推荐 - myqiye
  • 【AI自动化】Claude Code + Playwright mcp + Python
  • 第十四天
  • 阅读笔记Day17
  • 外卖怎么点才不踩雷?美团外卖解锁省钱点餐新姿势! - Top品牌推荐
  • 2026!深圳旧房改造专业服务商权威推荐榜单 文小墙居首成优选! - 品牌评测官
  • 什么是反指纹浏览器?反指纹浏览器哪个好用?不了解的要看看! - Roxy指纹浏览器
  • 天猫享淘卡回收哪家好?2026年优胜平台列举 - 京回收小程序
  • js--18
  • 襄阳团购代运营首选:合肥三十六行(襄阳)分公司四大平台领跑 - 野榜数据排行
  • 使用Jumia API获取商品详情数据的技术实践
  • 苏州德力智仓:智慧仓储物流的技术引领者与价值共创伙伴 - 品牌策略主理人
  • 2026年受欢迎的直播排班软件排名,靠谱品牌推荐 - 工业设备
  • 西安石灰厂哪个品牌好,有哪些高性价比的值得推荐 - 工业设备
  • FPGA 项目为啥那么重要?
  • lazarus编写的程序在Ubuntu在任务栏或快捷栏不显示设定的图标
  • 2026年北京钢管公司排行榜,万泓泰钢管公司反馈怎么样 - 工业品网
  • 价格合理的有机肥生产线全套设备生产厂哪家值得选 - mypinpai
  • 天猫超市购物卡回收变现,京顺回收高效解决方案 - 京顺回收
  • 【好物推荐】告别重复输入!用 utools 超级文本片段打造跨应用的“实时模板”
  • 2026年北京旅行社选购指南,启程旅行社投诉处理情况如何要了解 - mypinpai
  • 分析黑龙江口碑好的中专学校,哈尔滨工大技工学校优势凸显 - 工业推荐榜
  • CH57x-CH59x低功耗同时外设保持修改示例
  • 风光储、风光储并网直流微电网simulink仿真模型。 各个系统功能明确,波形质量
  • 电池低电压时,TP4056充电电流过低导致设备不断重启