博客
关于我
Strom 0.9.2-incubating 斜街 Kafka 重复消费数据
阅读量:800 次
发布时间:2023-03-31

本文共 550 字,大约阅读时间需要 1 分钟。

一、问题描述

在进行 Storm 斜街 Kafka 作业时,Storm 的 Spout 作为 Kafka 的消费者,接收到消息后将其发送到 Bolt 进行输出。然而,开发者发现 Storm 一直提交的都是同样的偏移量(offset),这导致了数据的重复消费。这种现象对数据的准确性和系统的稳定性都产生了负面影响。

二、解决方案

在查阅 GitHub 上的官方示例后,开发者发现问题出在 Bolt 的输出逻辑上。具体来说,Bolt 在处理消息后没有及时发送确认(ack),导致作为消费者的 Spout 无法接收到最新的偏移量信息。为了解决这个问题,建议在 Bolt 的 execute 方法中添加 collector.ack(input) 的调用,以确认消息的成功处理。

以下是修复后的代码示例:

```java public void execute(Tuple input) { String log = input.getString(0); if (log.length() > 0) { System.out.println("【info, partition1: hive log】: " + log); } collector.ack(input); //发送 ack 确认,避免重复消费

转载地址:http://tpefk.baihongyu.com/

你可能感兴趣的文章
Oracle创建用户与授予表空间与权限
查看>>
oracle创建表(并且实现ID自增)
查看>>
oracle删除重复数据保留第一条记录
查看>>
oracle判断空值的函数nvl2,【PL/SQL】 NVL,NVL2,COALESCE 三种空值判断函数
查看>>
Oracle发布VirtualBox 7.1稳定版!支持ARM、优化了UI、支持Wayland等
查看>>
oracle启动三步
查看>>
oracle启动关闭服务,启动关闭oracle服务.bat
查看>>
Oracle命令行创建数据库
查看>>
Oracle和SQL server的数据类型比较
查看>>
oracle和sybase的一些区别
查看>>
oracle在日本遇到的技术问题
查看>>
Oracle在线重定义
查看>>
oracle基础 管理索引
查看>>
ORACLE多表关联UPDATE 语句
查看>>
Oracle多表查询与数据更新
查看>>
oracle如何修改单个用户密码永不过期
查看>>
oracle字符集
查看>>
oracle存储参数(storage子句)含义及设置技巧
查看>>
Oracle学习
查看>>
Oracle安装、Navicat for Oracle、JDBCl连接、获取表结构
查看>>