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

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

相关推荐
温启志c#16 分钟前
winform c# 做的2个运控平台,通过修改表格 的方式,也可以通过语音识别的交互方式,更加智能。
开发语言·c#
Dream achiever2 小时前
11.WPF 的命令处理事件--参数介绍
开发语言·c#·wpf
布伦鸽2 小时前
C# WPF DataGrid 数据绑定时的单元格编辑类型模板
开发语言·c#·wpf
入目星河滚烫3 小时前
Unity避坑——继承了MonoBehaviour的对象不能通过new来创建
unity·c#·游戏引擎
大飞pkz3 小时前
【设计模式】组合模式
开发语言·设计模式·c#·组合模式
Aevget4 小时前
DevExpress WPF中文教程:如何使用虚拟源将WPF数据网格绑定到任何数据源?
c#·.net·wpf·界面控件·devexpress·ui开发
weixin_436525074 小时前
芋道源码 - RabbitMQ + WebSocket 实现分布式消息推送
分布式·websocket·rabbitmq
飞鱼&4 小时前
RabbitMQ-消息堆积
分布式·rabbitmq
李小枫4 小时前
在linux上安装kafka,并使用kafka-clients实现消费者
linux·kafka·linq
zcyf08094 小时前
rabbitmq分布式事务
java·spring boot·分布式·rabbitmq