Spring-Kafka确认机制报错:No Acknowledgment available as an argument

news2024/9/24 7:17:54

问题出现

在spring boot集成kafka时报错,报错信息:

No Acknowledgment available as an argument, the listener container must have a MANUAL AckMode to populate the Acknowledgment.

翻译: Acknowledgment 参数不可用,监听容器需要设置一个手动的 AckMode 才能填充Acknowledgment

问题代码:

@KafkaListener(topics = PENDING_TOPIC, groupId = KafkaProducer.TOPIC_GROUP1)
    public void topic_test(ConsumerRecord<?, ?> record, Acknowledgment ack, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
        Optional message = Optional.ofNullable(record.value());
        if (message.isPresent()) {
            Object msg = message.get();
            logger.info("topic.group1 消费了: Topic:" + topic + ",Message:" + msg);
            ack.acknowledge();
        }
    }

这是参考其他人的消费者端的代码,方法里有Acknowledgment 类型参数,说明该参数没有被识别。首先查一下这个参数的含义。

问题分析

Acknowledgent 类型参数的含义:
控制消息的确认机制。在kafka中,消费者提交偏移量时需要确认,执行ack.acknowledge();后代表告诉 Kafka 消费者组,当前的消息已经被成功处理并且可以提交偏移量。这意味着消费者不会再次处理这条消息。

Spring-kafka 提供了多种确认机制,也就是 AckMode。官方文档显示AckMode 有以下几种:
在这里插入图片描述

  • RECORD: 当监听器处理完记录返回时,提交偏移量.
  • BATCH: 处理完 poll() 返回的所有记录后,提交偏移量。
  • TIME: 当poll()返回的所有记录都已处理完毕后,只要超过上次提交后的 ackTime,就提交偏移量。
  • COUNT: 当poll()返回的所有记录都已处理完毕后,只要上次提交后已收到 ackCount 记录,就提交偏移量。
  • COUNT_TIME: 与 TIME 和 COUNT 类似,但如果任一条件为真,都会执行提交。
  • MANUAL: 处理完一批数据后,手动调用 Acknowledgment.acknowledge()方法将offest提交至缓存,之后在下一个poll() 之前用BATCH 方式提交。
  • MANUAL_IMMEDIATE: 当监听器调用 Acknowledgment.acknowledge() 方法时,立即提交偏移量。

报错原因:

从上面的集中确认机制中可以看到,只有MANUALMANUAL_IMMEDIATE 用到了Acknowledgment 其他都没有。所以需要把AckMode 配置成这两个其中一个才行,而查看配置文件发现我确实没有配。

解决办法:

application.yaml 中配置ack-mode: manual_immediate
在自定义配置AckMode 的时候,首先需要将enable-auto-commit 设置成false 才行,2.3版本之后默认是false,不过使用的默认机制是BATCH,所以还需要将ack-mode设成manual_immediate 来覆盖默认配置。
在这里插入图片描述

spring:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
        # 值的反序列化方式
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      group-id: geo-friend
      enable-auto-commit: false # 设置成手动提交
      auto-commit-interval: 1S
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    listener:	# 配置监听容器的ackmode
      concurrency: 5
      ack-mode: manual_immediate
      missing-topics-fatal: false

参考资料:
spring-kafka 文档:https://docs.spring.io/spring-kafka/docs/2.8.2/reference/html/#committing-offsets

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

thingsboard-3.6.4 源码编译运行

1.首先我们要检查我们所需要的环境是否全部安装&#xff0c;还有对应的版本&#xff0c;一定要按照项目要求的版本来&#xff0c;要不然你会给自己挖很多坑。 我们使用的是3.6.4的版本&#xff0c;下面的版本全是基于这个版本的。需要安装好已经配置环境变量。 这部分大家就自…

adaboost提升方法

集成学习&#xff1a;串联&#xff08;提升方法&#xff09;&#xff0c;并联&#xff08;随机森林&#xff09; Adaboost&#xff1a;分类加法模型&#xff08;更新样本权值&#xff0c;投票权值-由权值误差率决定&#xff09; 提升树&#xff1a;回归加法模型 &#xff08;…

Linux驱动开发—平台总线模型详解

文章目录 1.平台总线介绍1.1平台总线模型的组成部分1.2平台总线模型的优势 2.使用平台总线模型开发驱动2.1注册platform设备2.2注册platform驱动2.3效果演示 1.平台总线介绍 Linux 平台总线模型&#xff08;Platform Bus Model&#xff09;是一种设备驱动框架&#xff0c;用于…

软件测试老兵的十条生存法则

在当下的数字化时代&#xff0c;软件测试行业正经历快速的变革和发展。自动化测试、持续集成和持续交付&#xff08;CI/CD&#xff09;、人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;、云计算和DevOps等技术正在重塑软件测试的各个方面。这些变化不…

全国产Gpixel图像传感器+FPGA+AI高帧率机器视觉工业相机解决方案

近些年来&#xff0c;机器视觉广泛应用于智能制造、自动化等设备中&#xff0c;用来保证产品质量&#xff0c;控制生产流程&#xff0c;感知环境等。面对不同的应用场景&#xff0c;检测系统需要满足不同的技术指标。其中图像传感器的分辨率和帧率是两个极为重要的指标&#xf…

2023级JavaScript与jQuery

第一课&#xff1a;JavaScript概述 一.预习笔记 1.认识JavaScript 1-1&#xff1a;1995年&#xff0c;NetScape公司与Sun公司联合开发出JavaScript脚本语言 1-2&#xff1a;JavaScript的作用 1&#xff09;客户端表单验证 2&#xff09;页面动态效果 3&#xff09;动态改…

[米联客-安路飞龙DR1-FPSOC] UDP通信篇连载-03 IP_ARP层程序设计

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

基于Golang实现Kubernetes边车模式

本文介绍了如何基于 Go 语言实现 Kubernetes Sidecar 模式&#xff0c;并通过实际示例演示创建 Golang 实现的微服务服务、Docker 容器化以及在 Kubernetes 上的部署和管理。原文: Sidecar Pattern with Kubernetes and Go[1] 在这篇文章中&#xff0c;我们会介绍 Sidecar 模式…

【分享】2022年291个城市的人均GDP数据,附带数据获取方式

2022年291个城市的人均GDP数据涉及全国地级及以上城市的经济发展水平。在这份详尽的数据中&#xff0c;包括了众多城市的经济表现&#xff0c;并依据国际标准对它们的经济状况进行了分类。具体如下&#xff1a; 人均GDP高值城市 鄂尔多斯&#xff1a;鄂尔多斯市位于内蒙古自治区…

单位企业邮箱有什么优势

单位企业邮箱成为了企业内外沟通的重要工具。单位企业邮箱的优势有什么呢&#xff1f;一、统一专业形象&#xff1b;二、高效沟通&#xff1b;三、安全保障&#xff1b;四、便捷管理&#xff1b;五、定制服务等。本文将深入探讨单位企业邮箱的独特优势&#xff0c;帮助您了解为…

格力美容仪售价9800元 董明珠:用一周发现变美了

近日&#xff0c;格力电器董事长兼总裁董明珠在格力冰洗生活电器战略发布会上透露&#xff0c;公司已研发了美容仪。 《时代周报》记者查询格力董明珠店官网发现&#xff0c;目前有一款名为“格力微电流美容仪”的产品在售卖&#xff0c;售价9800元&#xff0c;截至发稿已售出…

详解直铺防静电瓷砖的特点与优势

防静电地板分为架空防静电地板和直铺防静电地板&#xff0c;直铺式防静电地板是一种直接铺设在地面上的地板系统&#xff0c;防静电瓷砖就是常用的直铺防静电地板之一。防静电瓷砖是在瓷砖烧制过程中加入防静电功能粉体进行物理改性&#xff0c;规格为600*600*10mm&#xff0c;…

Windows使用wsl安装docker-desktop

一&#xff1a;修改Windows配置&#xff0c;启用相关功能。 1&#xff1a;启用硬件虚拟化VT-d 各品牌电脑的Bios设置都不一致&#xff0c;需要自行查找如何进入Bios开启VT-x功能&#xff0c;绝大部分电脑此功能默认情况下是直接开启的。 2&#xff1a;确定Windows系统的类别…

带动画特效、带音乐的仿真翻页电子相册制作教程

在当前数字化快速发展的时代&#xff0c;仿真翻页电子相册作为一种富有创意和互动性的表达形式&#xff0c;正受到越来越多用户的青睐。本教程将介绍如何利用带动画特效和音乐的功能&#xff0c;通过FLBOOK这款强大的电子相册制作工具&#xff0c;创作出令人印象深刻的作品。 第…

剪画小程序:录音转文字:告别会议烦恼,轻松整理文档!

在忙碌的工作中&#xff0c;开会是家常便饭。 每次会议上大家的讨论、决策和重要信息&#xff0c;都对工作的推进至关重要。 但您是否曾为会议录音的整理而感到头疼&#xff1f;冗长的会议录音&#xff0c;想要从中准确提取关键信息&#xff0c;费时又费力。 别担心&#xff…

文件系统 ---在硬盘中的文件

序言 在前两章的内容中&#xff0c;我们主要是介绍了一个文件被调度时&#xff0c;在内存中的存在形式以及相关的内核结构。在这一章中&#xff0c;我们主要介绍一磁盘是如何管理并存储文件的以及文件在磁盘上的存在形式。  大部分电脑采用硬盘驱动器&#xff08;HDD&#xff…

AWS域名注册:AWS 是否可以注册HK域名?

AWS&#xff08;Amazon Web Services&#xff09;本身并不直接提供域名注册服务&#xff0c;但它通过其服务Amazon Route 53提供域名注册功能&#xff0c;九河云来和你详细说说域名注册的一些事项吧。通过Amazon Route 53&#xff0c;你可以注册各种顶级域名&#xff08;TLD&am…

openai command not found (mac)

题意&#xff1a;mac 系统上无法识别 openai 的命令 问题背景&#xff1a; Im trying to follow the fine tuning guide for Openai here. 我正在尝试遵循 OpenAI 的微调指南 I ran: 我运行以下命令 pip install --upgrade openaiWhich install without any errors.…

本地安装Llama3.1与LobeChat可视化UI界面并实现远程访问大模型实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

著名数学教育家的精辟见解表明R有最小正数元

黄小宁 著名数学教育家余元希教授著《数的概念浅说》114页指出&#xff1a;数轴是连续的点集&#xff0c;它的元素是一个一个紧挨着的。这精辟见解说明R轴即x轴必有紧挨着原点x0的正数点xt&#xff0c;t显然是R的最小正数元&#xff0c;任何比t小的正数都是“更无理”的R外正数…