毕业设计难度适中的网站开发项目题目,wordpress模板展示网站,网页设计开发培训,舟山网站网站建设KafKa手动提交offset问题描述
在分布式架构#xff0c;我在XXJOB来进行调用接口产生数据#xff0c;将数据提交KafKa进行存储#xff1b;然后将KafKa中数据拿出来消费#xff0c;在处理KafKa出来的数据时#xff0c;调用另外一个服务时#xff0c;正好另外一个服务挂了我在XXJOB来进行调用接口产生数据将数据提交KafKa进行存储然后将KafKa中数据拿出来消费在处理KafKa出来的数据时调用另外一个服务时正好另外一个服务挂了导致手动提交offset失败造成数据的重复消费
KafkaListener(topics xxx,groupId consumer01)public void listen(ConsumerRecord record, Header(KafkaHeaders.RECEIVED_TOPIC) String topic, Acknowledgment ack) {/**代码块其中有调用别的服务接口**/// 手动提交offsetack.acknowledge();}问题解决
解决方案就是将可能有问题的代码使用try…catch进行捕获异常然后在finally进行手动提交offset
KafkaListener(topics xxx,groupId consumer01)public void listen(ConsumerRecord record, Header(KafkaHeaders.RECEIVED_TOPIC) String topic, Acknowledgment ack) {try{/**代码块其中有调用别的服务接口**/}catch(Exception e){}finally{// 手动提交offsetack.acknowledge();}}解决方案仅供参考不喜勿喷。