KafKa手动提交问题描述

KafKa手动提交offset问题描述

在分布式架构,我在XXJOB来进行调用接口产生数据,将数据提交KafKa进行存储;然后将KafKa中数据拿出来消费,在处理KafKa出来的数据时,调用另外一个服务时,正好另外一个服务挂了,导致手动提交offset失败,造成数据的重复消费;

java 复制代码
@KafkaListener(topics = "xxx",groupId = "consumer01")
    public void listen(ConsumerRecord record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic, Acknowledgment ack) {
   		/**
   			代码块(其中有调用别的服务接口)
   		**/
   		// 手动提交offset
        ack.acknowledge();
    }

问题解决

解决方案就是将可能有问题的代码使用try...catch进行捕获异常,然后在finally进行手动提交offset

java 复制代码
@KafkaListener(topics = "xxx",groupId = "consumer01")
    public void listen(ConsumerRecord record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic, Acknowledgment ack) {
    	try{
	    	/**
	   			代码块(其中有调用别的服务接口)
	   		**/
    	}catch(Exception e){
    		
    	}finally{
    		// 手动提交offset
        	ack.acknowledge();
    	}
   		
   		
    }

解决方案仅供参考,不喜勿喷。

相关推荐
姜行运35 分钟前
数据结构【树和二叉树】
android·数据结构·算法·c#
苏州向日葵40 分钟前
C#学习知识点记录
开发语言·学习·c#
小马爱打代码43 分钟前
Kafka 命令行样例大全
kafka
一念春风1 小时前
C# 音频分离(MP3伴奏)
数据库·c#·音视频
mikey棒棒棒1 小时前
使用RabbitMQ实现判题功能
分布式·消息队列·rabbitmq·oj
xmyLydia1 小时前
Kafka + Elasticsearch 构建搜索型审计日志系统实战(含 Kibana 可视化)
elasticsearch·kafka
程序猿多布1 小时前
网络开发基础(游戏)之 粘包分包
网络·游戏·c#
卡拉叽里呱啦2 小时前
C#中异步的用法、原则和基本原理
开发语言·c#
早睡3352 小时前
Spark-Streaming核心编程
大数据·分布式·spark
sinat_262292114 小时前
Java面试实战:音视频场景下的微服务架构与缓存技术剖析
java·spring boot·redis·微服务·kafka·分布式系统·面试技巧