kafka 配置消息编码格式、解决消费者中文乱码

Kafka消息乱码全解析:从编码原理到生产环境解决方案 在分布式消息系统中,消息的序列化与反序列化是确保数据一致性的核心技术环节。其原理在于将数据结构或对象转换为字节流进行传输,接收端再按约定规则还原。这一过程的技术价值在于实现跨进程、跨语言的可靠数据交换,是微服务解耦、数据管道构建的基础。在实际应用场景中,Apache Kafka作为主流消息队列,其消息传输本质是字节数组的传递,若生产端与消费端的编解码协议不一致,就会产生乱码问题,常见于中文字符处理、多系统交互等场景。本文聚焦Kafka消息乱码这一典型问题,深入剖析其根源在于生产者与消费者对消息内容的编码理解 阅读详情
AI摘要

博客主要围绕Kafka展开,介绍了Kafka发送消息时需对key和value进行序列化处理,一般采用字符串方式,消息量大时需优化。还提及代码配置和配置文件配置,在配置文件无编码格式配置处,可通过分析源码解决。

序列化

kafka 发送消息需要把key 和value 进行序列化处理

一般配置字符串方式,如果消息量大需要优化成其他方式。

代码配置

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("serializer.encoding", "UTF-8"); // 设置编码格式
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("deserializer.encoding", "UTF-8"); // 设置编码格式

配置文件配置

spring:
  kafka:
    auto:
      initTopic: false
    bootstrap-servers: *****
    consumer:
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      enable-auto-commit: false
      properties:
        security:
          protocol: SASL_PLAINTEXT
        sasl:
          mechanism: PLAIN
          jaas:
            config: org.apache.kafka.common.security.plain.PlainLoginModule required username="*****" password="****";
    producer: # 生产者
      retries: 1 # 设置大于0的值,则客户端会将发送失败的记录重新发送
      # 每次批量发送消息的数量
      batch-size: 16384
      buffer-memory: 33554432
      # 指定消息key和消息体的编解码方式
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      properties:
        security:
          protocol: SASL_PLAINTEXT
        sasl:
          mechanism: PLAIN
          jaas:
            config: org.apache.kafka.common.security.plain.PlainLoginModule required username="******" password="******";
    listener:
      missing-topics-fatal: false
      ack-mode: manual
  

这里没有配置编码格式的地方,那么分析一下源码,发现可以这样写

参考资料:https://www.fancv.com/article/1733134314

SpringCloud-stream一体化MQ解决方案-消费者组 中文文档介绍英文文档介绍:Learn标签选择对应版本说明文档→overview→Main Concepts(Consumer Groups)Learn标签选择对应版本说明文档​overview​​。 阅读详情

相关推荐

如何安装配置kafka

本文介绍了如何安装kafka,如何配置kafka,kafka集群启动、停止及kafka基本操作方法。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 1229

kafka消费中文乱码问题

kafka生产者发送中文(采用UTF-8编码)到消息队列,在本地IDEA运行调试正常。将软件打包成jar,在dos窗口运行jar包,发现发送中文数据时是乱码,消费者消费中文时也是乱码。 可能原因 放到服务器的dos运行jar包 , dos窗口的默认编码为GBK,将经过utf-8编码之后的数据再进行gbk解码-编码,所以此时消息会出现乱码。 解决方法 代码中进行的utf-8编码不进行改动,运行jar包时,使用命令 java -Dfile.encoding=utf-8 -jar jar包名,此时将dos窗口默

xiao_bai111的博客 1万+

中文乱码问题

JSP文件的中文乱码问题 Servlet的中文乱码问题 表单处理的中文乱码问题 Struts 2的中文乱码问题

windows环境下kafka-console-consumer.bat接受中文乱码问题

问题描述: 以命令框启动kafka,producer,consumer,当producer发送中文时,consumer接受到的消息为乱码,具体如下图: 生产者如下: 消费者如下: 具体原因未发现,路过大神指教下...

以考促学,持证上岗。 9751

基于ROS的机械臂手眼标定-Aruco使用与相机标定

基于ROS的机械臂手眼标定-Aruco使用与相机标定 折腾了一段时间的机械臂的手眼标定,相关资料挺多的,但使用起来都比较复杂,新手一般比较难搞懂。于是想做一个比较简单易懂易用的手眼标定程序。 程序都是Copy的开源代码,所以也开源出来: 开源地址:https://gitee.com/ohhuo/handeye-calib 作为手眼标定中的重要一环,相机中标定板位姿关系获取直接影响标定精度,我们使用aruco这个开源程序来实现坐标的获取。 #mermaid-svg-WkFpFkV4QqzXMvJ4 .labe

生活不止眼前的苟且 1万+

MAX96724解串器拨码配置实战:从COAX/GMSL2模式到IIC地址设定

本文详细解析了MAX96724解串器的拨码配置方法,涵盖电源管理模式、I2C地址设定及COAX/GMSL2视频传输模式。通过实战案例和故障排查技巧,帮助工程师快速掌握xcDeserializer4.0版本的配置要点,避免常见错误,提升车载摄像头和工业视觉系统的调试效率。

weixin_29243279的博客 576

kafka tool数据乱码

kafkatool工具乱码

weixin_44870066的博客 2547

卡尔曼滤波五步拆解:用Excel手推姿态解算全过程

本文通过Excel手推演示,详细拆解了卡尔曼滤波在姿态解算中的五步核心流程。文章以融合陀螺仪与加速度计数据估算角度为例,从状态预测、协方差更新到增益计算,逐步展示如何将抽象的矩阵运算转化为可视化的表格计算,帮助读者直观理解滤波器的“预测-修正”机制,并为算法实现与参数调优提供清晰指导。

hhh00的博客 978

【Kafka】Kafka消息乱码解决

【案例】【Kafka】Kafka消息乱码解决

tttzzzqqq2018的博客 7118

Unity VR 零基础开发之 Pico4 MR

2、弹出弹窗后,点击Android选项,然后再点击Switch Platform按钮切换成安卓平台。3、切换完成后Android选项后面会显示unity图标。

十画的博客 5092

083、多帧降噪(MFR)与VST算法:低照度场景下的信噪比提升与鬼影抑制

本文深入探讨了多帧降噪(MFR)和VST算法在低照度场景中的应用与优化。作者从实际项目案例出发,指出单帧降噪的局限性,详细分析了MFR的核心原理与工程实现中的关键环节,包括帧对齐、帧选择、融合策略和鬼影抑制等技术要点。文章特别强调VST变换对噪声均匀化的重要性,并分享了实际开发中的调试经验与参数优化技巧,如"三明治"调试法和性能平衡策略。最后指出,优秀的MFR方案需要在信噪比提升、鬼影抑制和纹理保留之间找到场景化的平衡点,建议开发者通过真实场景测试验证算法效果。全文既有理论分析,又包含丰富的实战经验和技术细

zzfmlxs的博客 122

Kafka消息乱码问题深度解析:从编码原理到生产环境根治方案

字符编码是计算机系统中文本数据存储与传输的基础概念,它定义了字符与二进制字节序列之间的映射规则。在分布式消息系统中,消息的序列化与反序列化过程本质上是基于字符编码的字节转换。当生产者与消费者使用不同的字符集进行编解码时,就会出现乱码问题,这直接影响了数据的完整性与业务可靠性。Kafka作为核心的消息中间件,其消息传递基于字节数组,不执行编码转换,因此编码一致性成为保障数据正确性的关键技术要点。在实际的工程实践中,尤其是在涉及多语言客户端、复杂数据管道(如Filebeat -> Kafka -> Logsta

weixin_33984032的博客 388

ROS2入门到精通—— 1-1 Linux和ROS2基础

本文介绍了Linux的一般指令以及ROS2的常见理论和操作

BigDavid123的博客 3799

攻克Kafka消息头:从0到1掌握自定义元数据传递

你是否还在为消息传递中的数据分类、路由和过滤难题烦恼?当业务需要传递用户ID、追踪编号或数据来源等元信息时,直接嵌入消息体不仅破坏数据结构,还会增加解析复杂度。本文将带你彻底掌握Kafka消息头(Header)的自定义技术,通过实战案例解决90%的分布式系统元数据传递问题。读完本文你将获得: - 消息头在Kafka架构中的核心作用 - 3步实现生产者自定义消息头 - 消费者提取头部信息的高效方法 ...

gitblog_00589的博客 448

C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))

1 、题目 计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5)) 2、部分函数说明 C 库函数 double pow(double x, double y) 返回 x 的 y 次幂。 3、源代码实现 #include <stdio.h> #include <...

码莎拉蒂 4609

Yolov8-pose关键点检测:训练实战篇 | 手部关键点检测

yolo8-pose实战检测手部关键点并优化。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3395

Kafka 集群部署与实时数据接入实战

Kafka 集群部署的关键在于网络配置、节点角色分配和持久化挂载,确保各节点通信正常且数据不丢失。中文乱码是跨系统文件读取的常见问题,核心是编码格式不兼容,通过iconv命令可快速转换编码。后续可基于该集群继续测试日志文件的批量接入性能,观察不同数据量下 Kafka 的处理效率。

C_buguake的博客 1025

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Windows搭建kafka环境,实现消息的发送,消费

Windows搭建kafka环境,实现消息的发送,消费 搭建kafka环境 下载zookeeper 安装Zookeeper Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper 1.1 下载安装文件: http://mirror.bit.edu.cn/apache/zookeeper/ 1.2 解压文件(本文解压到 C:\kafk...

hery的博客 820

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Kafka 案例-生产者、消费者

执行以下命令,创建topic,创建一个副本为3、分区为5的topic。新打开一个cmd界面,执行以下命令,进入kafka2容器。新打开一个cmd界面,执行以下命令进入kafak1容器。打开一个cmd,执行以下命令,进入kafka1容器。可以看见消费者中成功接收到消息。5.查看消费者是否收到消息。1.创建话题topic。执行以下命令创建生产者。执行以下命令创建消费者。4.在生产者中输入消息。

2302_80654296的博客 369

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

windows本地kafka和zookeeper单机版

总结:上面总共开启了3个cmd。zookeeper配置环境变量,在cmd中可以不指定路径,直接执行。kafka没有配置环境变量,要有路径执行。在config目录下复制一份zoo_sample.cfg文件到同级目录,然后更改名称为zoo.cfg。server.properties配置完后,需要在kafka_2.12-3.5.1目录下。2).cmd启动zookeeper客户端(可以不用启动,截图略)1).cmd启动zookeeper服务端运行。1).新建zookeeper系统变量。2).添加配置path。

努力工作学习的程序员 1483

3分钟解决kafka-docker跨环境数据一致性:时区与编码配置实战指南

在分布式系统中,Kafka作为消息中间件常面临跨环境数据不一致问题,其中时区偏移导致的时间戳错误和编码格式不统一引发的乱码占比超65%。本文基于[kafka-docker项目](https://link.gitcode.com/i/52444eef3e0fc4d3d7683d1cbee4272b),提供一套无需修改源码的配置方案,通过环境变量注入实现容器化Kafka的时区与编码标准化,确保日志时间

gitblog_00764的博客 961

SpringCloud-stream一体化MQ解决方案-基本配置篇

当然也可以将它设置为默认MQ链接,因这是一个综合项目,上面已经设置rabbitMQ为默认链接,下面是注销的配置,选择使用。在配置文件中绑定上述Binders:myrabbitmq,以及自定义消息通道:myrabbitmqexchange。我是通过安装包上的版本号获取rocketMQ的版本号,当然也可以通过其他方式获取RocketMQ的版本号。也可以将它设置为默认连接,因前面将RabbitMQ设置为了默认连接,所以这里注销掉,依据个人情况使用。在配置文件中编写消费者,进行消费。在配置文件中使用消费者。

qq_23095607的博客 1054

tp6使用Kafka进行发邮件Excel

使用前需要先进行Kafka的配置和Java JDK的安装 参考文档 然后在框架中安装Excel composer require phpmailer/phpmailer 然后在配置文件中进行公共参数的设置 //邮件发送配置 'email' => [ 'CharSet' => 'UTF-8',//编码格式为utf8 'Host' => 'smtp.qq.com',//SMTP服务器 以QQ邮箱为例子 'SMTPAuth' =&gt

stringQiang的博客 1319

高性能消息中间件 - Kafka3.x(四)

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

Yyyy的博客 691

SpringCloud-stream一体化MQ解决方案-函数式编程

中文文档英文文档介绍:Learn标签选择对应版本说明文档→overview→Programming Model (Producing and Consuming Messages ( Spring Cloud Function support))Learn标签选择对应版本说明文档​​overview​​2.1.1 Stream函数式编程参考资料部分的二、Java8内置的四大核心函数式接口如果不会泛型的话可以参考或者参考具体原理参照上面的文档,下面只介绍怎么使用。

qq_23095607的博客 1898

SpringCloud-stream一体化MQ解决方案-概念篇

根据上述重要组成部分讲解,SpringCloud-streamd的使用大致分为以下5步:要有MQ链接,并且知道它的IP、端口等链接信息;②:创建该链接的实例,并设置默认实例,见上述binders的创建;③:编写生产者和消费者,见上述生产者,消费者使用①、②;④:注入生产者、消费者,分别为生产者、消费者绑定MQ实例,绑定消息通道,见上述生产者、消费者使用③,以及消息通道;⑤:利用生产者、消费者发送/接受消息,见上述生产者、消费者使用。

qq_23095607的博客 864
上一篇: vmWare虚拟环境centos7安装Hadoop 伪分布式实践
下一篇: Windows 使用管理命令动态的修改保留端口范围
hamish-wu
博客等级 码龄15年 2814粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值