当前位置: 首页 > news >正文

Kafka-Java二:Spring实现kafka消息发送的ack机制

写在前面

        如果只有一个kafka实例的话,那么文章中提到kafka集群=kafka实例

一、什么是消息发送者端的ack机制

        ack机制:消息确认发送成功的标识

        由谁发起该标识:kafka集群

        发起该标识的场景:kafka集群确认已经收到了消息。

        由谁接收该标识:消息发送者端

        接收该标识的意义:消息发送者接到该标识,才表示消息发送成功。

二、消息发送者端ack机制的策略有哪些

2.1、ack=0

        kafka集群不需要任何broker收到消息,就立即返回ack给生产者。

        该模式最容易丢失消息,但效率最高

2.2、akc=1

        kafka默认的ack机制策略

        kafka集群中,Leader的broker收到了消息,并且把消息写入到了log文件中,此时才返回ack给kafka。

        该模式性能和安全性是最均衡的。

2.3、ack=-1/all

        配置文件中的min.insyc.replicas=2(默认为1,推荐配置2)将生效。

        min.insyc.replicas=n:当kafka集群接受到消息以后,当kafka集群完成了n个broker(包含Leader和follower)上的备份以后,再回复ack。

        该模式最安全,但性能最差

三、消息发送失败的重试策略

        消息发送失败会重试,重试的默认时间是100ms,重试的默认次数是3。

        重试保证了消息的可靠性,但也可能造成消息的重复发送,比如说网络抖动。

        所以需要在消费者做好消息接口的幂等性操作

四、通过Java设置kafka的ack机制和重试策略

Properties props = new Properties();// 一、设置参数// 配置kafka地址
//        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
//                "192.168.151.28:9092"); // 单机配置props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.154.128:9092,192.168.154.128:9093,192.168.154.128:9094"); // 集群配置// 配置消息 键值的序列化规则props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());// 配置生产者发送消息的ack机制/*** ack=0:*   kafka集群不需要任何broker收到消息,就立即返回ack给生产者。*   该模式最容易丢失消息,但效率最高* akc=1:(kafka默认的方式)*   kafka集群中,Leader的broker收到了消息,并且把消息写入到了log文件中,此时才返回ack给kafka。*   该模式性能和安全性是最均衡的。* ack=-1/all:*   默认配置文件中的min.insyc.replicas=2(默认为1,推荐配置2)将生效。*   min.insyc.replicas=n解释:当kafka集群接受到消息以后,当kafka集群完成了n个broker(包含Leader和follower)上的备份以后,再回复ack。*   该模式最安全,但性能最差*/props.put(ProducerConfig.ACKS_CONFIG,"1");// 配置消息发送时间(未接收到ack)的重试次数和重试间隔时间/***  消息发送失败(即没有收到ack)的重试次数和重试间隔*   消息发送失败会重试,重试的默认时间是100ms,重试的默认次数是3.*   重试保证了消息的可靠性,但也可能造成消息的重复发送,比如说网络抖动。所以需要在消费者做好消息接口的幂等性操作*/props.put(ProducerConfig.RETRIES_CONFIG,"3");props.put(ProducerConfig.RETRY_BACKOFF_MS_CONFIG,"300"); // 重试间隔

相关文章:

Kafka-Java二:Spring实现kafka消息发送的ack机制

写在前面 如果只有一个kafka实例的话,那么文章中提到kafka集群kafka实例 一、什么是消息发送者端的ack机制 ack机制:消息确认发送成功的标识 由谁发起该标识:kafka集群 发起该标识的场景:kafka集群确认已经收到了消息。 由谁接收…...

Go代码解密:理解byte和int8的边界行为

今天看到一个很有意思的 Golang 代码,最后的输出结果为 4: func main() {count : 0for i : range [256]struct{}{} {m, n : byte(i), int8(i)if n -n {count}if m -m {count}}fmt.Println(count) // 输出为 4 }原因如下 当 i 0 时,n -n …...

Mac M1下使用Colima替代docker desktop搭建云原生环境

文章目录 为什么不使用docker desktop1.docker desktop卸载2.docker、docker compose安装3.colima安装3.1获取镜像地址3.2将下载好的iso文件放到colima指定路径3.3重新执行colima start 4.minikukekubernetes安装5.关闭minikube Mac M1下使用Colima替代docker desktop搭建云原生…...

Non-constant range: argument must be an integer literal

更新 Xcode IDE 后 ForEach 方法抛出了如下异常 Non-constant range: argument must be an integer literal 新增了指向性 id 参数 init(_:content:) 原始方法 ForEach(0 ..< pickerTitleColors.count) {Text(self.pickerTitleColors[$0]).tag($0).foregroundColor(self.…...

TCP网络通信

TCP通信的 实现发1收1 package TCP1;//完成TCP通信的 实现发1收1import java.io.DataOutputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket;public class Client {public static void main(S…...

echarts中,X轴名称过长隐藏,鼠标hove显示全称

echarts中&#xff0c;X轴名称过长隐藏&#xff0c;鼠标hove显示全称&#xff1a; <div id"main" :style"{ width: 100%, height: 100% }"></div>option: {title: {text: 重点物料库存预警,left: center},tooltip: {trigger: axis,axisPointer…...

laravel框架介绍(二) 打开站点:autoload.php报错

Laravel&#xff1a;require..../vendor/autoload.php错误的解决办法 打开站点&#xff1a;http://laraveltest.com:8188/set_api-master/public/ set_api-master\public\index.php文件内容为&#xff1a; 解决办法&#xff1a; 1. cd 到该引用的根目录&#xff0c;删除 compo…...

reactNative导入excel文件

组件内导入 import {TouchableOpacity,PermissionsAndroid} from react-native; import RNFS from react-native-fs; import XLSX from xlsx; import DocumentPicker from react-native-document-picker; import {Buffer} from buffer;// 需要安装一下三个,Buffer和react-nati…...

mysql 命令行安装

一、安装包下载 1、下载压缩包 &#xff08;1&#xff09;公众号获取 关注微信公众号【I am Walker】&#xff0c;回复“mysql”获取 &#xff08;2&#xff09;官网下载 安装地址MySQL :: Download MySQL Community Server ​ ​ 二、解压 下载完之后进行解压&…...

JAVA基础知识Fundamental

JAVA基础知识 Java开发环境名词解释 八大基本类型整型长整型双精度浮点型布尔型字符型类型间的转换 运算符&#xff08;Operator&#xff09;算术运算符关系运算符逻辑运算符赋值运算符字符串连接运算符条件运算符 分支结构循环结构数组方法方法的重载&#xff08;overloading&…...

民宿如何经营与管理?【民宿小程序】

随着旅游业的快速发展&#xff0c;越来越多的人选择经营民宿&#xff0c;将自己的房屋开放给旅客入住。然而&#xff0c;要成功经营一家民宿&#xff0c;并保持良好的运营状态&#xff0c;需要有效的管理和营销策略。在这个过程中&#xff0c;民宿小程序能够发挥重要作用。 民宿…...

用 Rust 和 cURL 库制作一个有趣的爬虫

目录 一、介绍 二、准备工作 三、代码实现 四、解析 HTML 并提取特定元素示例 总结 本文将介绍如何使用 Rust 编程语言和 cURL 库制作一个有趣的网络爬虫。我们将通过实例代码来展示如何抓取网页内容、处理数据和解析 HTML 结构。同时&#xff0c;还将探讨爬虫技术的原理、…...

华为OD 走方格的方案数(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应往年部分考题以及新出的题目。 我将持续更新最新题目 我精选了一部分题目免费分享给大家,可前往夸克网盘转存,请点击以下链接进入: 我用夸克网盘分享了「华为OD题库J…...

postgresql|数据库|序列Sequence的创建和管理

前言&#xff1a; Sequence也是postgresql数据库里的一种对象&#xff0c;其属性如同索引一样&#xff0c;但通常Sequence是配合主键来工作的&#xff0c;这一点不同于MySQL&#xff0c;MySQL的主键自增仅仅是主键的属性做一个更改&#xff0c;而postgresql的主键自增是需要序…...

(完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类

文章目录 背景输入点直接输入邻接矩阵 背景 网上倒是有一些关于使用sklearn进行谱聚类的教程&#xff0c;但是这些教程的输入都是一些点的集合&#xff0c;然后根据谱聚类的原理&#xff0c;其会每两个点计算一次亲密度&#xff08;可以认为两个点距离越大&#xff0c;亲密度越…...

Unity中Shader的ShaderLOD

文章目录 前言一、ShaderLOD的使用步骤1、ShaderLOD使用在不同的SubShader中&#xff0c;用于区分SubShader所对应的配置2、在 C# 中使用 Shader.globalMaximumLOD 赋值来选择不同的 SubShader,以达到修改配置对应Shader的效果3、在设置LOD时&#xff0c;是需要和程序讨论统一 …...

图像压缩(4)《数字图像处理》第八章 8.3节 数字图像水印

图像压缩&#xff08;3&#xff09;《数字图像处理》第八章8.3节数字图像水印 一. 前言二.章节引言三.简单综述三.本章小结四.参考文献四. 小结 一. 前言 始于那本深蓝色的大块头&#xff0c;冈萨勒斯的《数字图像处理》&#xff0c;从此走上了图像信号处理的不归路&#xff0…...

C++之lambda匿名函数总结(二百四十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

STM32F103单片机内部RTC实时时钟驱动程序

一、STM32f103系列RTC功能 RTC实时时钟功能是嵌入式软件开发中比较常用的功能&#xff0c;一般MCU的RTC功能都带有年月日时间寄存器&#xff0c;比如STM32F4xx系列&#xff0c;RTC描述如下&#xff1a; 可见F4系列的RTC功能比较强大&#xff0c;设置好初始时间后&#xff0c;读…...

ChinaSoft 论坛巡礼 | 开源软件生态健康度量论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…...

Linux服务器日志爆满?5个实用命令快速定位并清理大日志文件

Linux服务器日志爆满&#xff1f;5个实用命令快速定位并清理大日志文件 当服务器磁盘空间告急时&#xff0c;日志文件往往是罪魁祸首。作为系统管理员&#xff0c;我们需要快速定位问题并安全清理&#xff0c;避免服务中断。本文将分享5个核心命令的组合使用技巧&#xff0c;帮…...

Gemma-3-12B-IT WebUI惊艳效果:Agent框架设计+Tool Calling实现

Gemma-3-12B-IT WebUI惊艳效果&#xff1a;Agent框架设计Tool Calling实现 1. 引言&#xff1a;当大模型拥有“手”和“眼” 想象一下&#xff0c;你正在和一个非常聪明的助手聊天。它能回答你的问题&#xff0c;帮你写代码&#xff0c;甚至能创作故事。但当你问它“现在几点…...

Ray Optics:面向未来的光学仿真平台——从零开始的光学建模实践

Ray Optics&#xff1a;面向未来的光学仿真平台——从零开始的光学建模实践 【免费下载链接】ray-optics A web app for creating and simulating 2D geometric optical scenes, with a gallery of (interactive) demos. 项目地址: https://gitcode.com/gh_mirrors/ra/ray-op…...

物理引擎核心原理拆解:GJK算法如何用Support函数取代SAT检测

物理引擎核心原理拆解&#xff1a;GJK算法如何用Support函数取代SAT检测 在实时物理模拟的世界里&#xff0c;碰撞检测算法的效率直接决定了虚拟世界的真实感与流畅度。当两个刚体在三维空间中高速运动时&#xff0c;传统分离轴定理&#xff08;SAT&#xff09;需要检测多达15组…...

IP查询API性能评测指南:从响应时间到QPS的完整评估方法

在广告投放、反作弊、内容风控、日志分析等系统中&#xff0c;IP地理位置查询通常是高频、基础、不可或缺的环节。然而&#xff0c;很多团队在技术选型时往往停留在“能查到就行”的层面&#xff0c;忽视了其对系统性能、稳定性与长期成本的影响。 本文从技术评估角度出发&…...

快手数据采集引擎:无水印解析与多源内容整合工具

快手数据采集引擎&#xff1a;无水印解析与多源内容整合工具 【免费下载链接】kuaishou-crawler As you can see, a kuaishou crawler 项目地址: https://gitcode.com/gh_mirrors/ku/kuaishou-crawler 价值定位&#xff1a;重新定义短视频数据采集标准 在数字内容分析与…...

我已战胜一切!感谢哥白尼,感谢爱因斯坦,感谢豆包,,,曾经我都经历过什么,我自己非常清楚,既有爱因斯坦的压缩版,又有哥白尼的压缩版,,,

不是时代不好&#xff0c;是人心中的成见就像一座大山般&#xff0c;无法被逾越&#xff0c;只有暴雨降下&#xff0c;洗刷这个世界&#xff0c;重塑这个宇宙&#xff0c;各位其位&#xff0c;大道至简。历史的车轮早已不可阻挡&#xff0c;&#xff0c;&#xff0c;暴风雨会来…...

无人机开发者必看:如何基于QGC源码定制你的专属地面站?从环境搭建到第一个插件开发

无人机开发者必看&#xff1a;如何基于QGC源码定制你的专属地面站&#xff1f;从环境搭建到第一个插件开发 在无人机技术迅猛发展的今天&#xff0c;开源地面站软件QGroundControl&#xff08;QGC&#xff09;已成为行业标准工具之一。但对于追求个性化功能或特定应用场景的开发…...

高数值孔径物镜焦斑分析

背景介绍在显微成像、激光加工、光存储与单分子探测等应用中&#xff0c;高数值孔径物镜承担着“把光压缩到极小空间”的关键任务。物镜聚焦后的焦斑尺寸、形状、能量分布以及偏振特性&#xff0c;直接决定系统的分辨率、加工精度和探测灵敏度。因此&#xff0c;如何准确分析高…...

独立站页面结构优化的注意事项是什么_独立站 SEO 与品牌建设的关系是什么

独立站页面结构优化的注意事项是什么 在当今的数字化时代&#xff0c;独立站&#xff08;独立网站&#xff09;已经成为个人品牌和企业展示自我、推广产品和服务的重要平台。单凭一个美观的独立站&#xff0c;难以在竞争激烈的网络环境中脱颖而出。因此&#xff0c;独立站页面…...