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();
    	}
   		
   		
    }

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

相关推荐
★YUI★34 分钟前
学习游戏制作记录(剑投掷技能)7.26
学习·游戏·unity·c#
smileNicky1 小时前
RabbitMQ有多少种Exchange?
分布式·rabbitmq
你我约定有三1 小时前
RabbitMQ--消息丢失问题及解决
java·开发语言·分布式·后端·rabbitmq·ruby
小乖兽技术1 小时前
C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
c++·c#·交互
Java初学者小白1 小时前
秋招Day19 - 分布式 - 分布式事务
java·分布式
I'mSQL2 小时前
C#与WPF使用mvvm简单案例点击按钮触发弹窗
开发语言·c#·wpf
程序员小羊!3 小时前
Zookeeper 3.6.3【详细技术讲解】整
分布式·zookeeper·云原生
工藤新一OL3 小时前
把xml的格式从utf-8-bom转为utf-8
xml·c#·asp.net·.netcore·visual studio
henreash4 小时前
NLua和C#交互
开发语言·c#·交互
是2的10次方啊5 小时前
微信公众号阅读量为什么会不一致?一文读懂分布式系统的那些事儿
分布式