KafkaAvroDeserializer踩坑记

本文详细介绍了在项目中使用KafkaAvroDeserializer进行消息反序列化的配置过程,包括解决类未找到的问题,添加依赖,以及解决启动时报错的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目中需要对接第三方系统,数据通过kafka传递过来,需要使用到 KafkaAvroDeserializer 来反序列化消息,于是踩坑开始了。

首先,我们设置反序列化工具:

configs.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class);

但是会发现找不到KafkaAvroDeserializer这个类,然后去pom文件中添加相关的依赖,在网上找的资料发现需要添加四个依赖:

<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-avro-serializer</artifactId>
    <version>5.3.0</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-schema-registry-client</artifactId>
    <version>5.3.0</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>common-utils</artifactId>
    <version>5.3.0</version>
</dependency>
<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>common-config</artifactId>
    <version>5.3.0</version>
</dependency>

但是我们我们的仓库中并没有找到这几个jar包,于是只能从网上把他们下载下来,上传到我们的中央仓库了,上传命令如下:

mvn deploy:deploy-file -Dmaven.test.skip=true -DgroupId=io.confluent -DartifactId=common-config -Dversion=5.3.0 -Dpackaging=jar -Dfile=common-config-5.3.0.jar -Durl=http://xxx/repository/maven-release/

然后就能在pom中直接使用了。

其实如果你不想这么麻烦的话,还有一种简单的方法:

在你的pom文件中添加如下repository和dependency就OK了:

<repositories>
     <repository>
         <id>confluent</id>
         <url>http://packages.confluent.io/maven/</url>
     </repository>
 </repositories>

</dependencies>
 	<dependency>
     		<groupId>io.confluent</groupId>
    		 <artifactId>kafka-avro-serializer</artifactId>
     		<version>1.0</version> <!-- Also tried 2.0-SNAPSHOT  -->
 	</dependency>
</dependencies>

但是,你以为这样就完了吗?当然不是,启动项目的时候它就报错了:

Caused by: io.confluent.common.config.ConfigException: Missing required configuration "schema.registry.url" which has no default value.

需要在consumer配置中添加如下配置:

configs.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "http://localhost:8081");

然后就可以正常使用啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值