Spring Boot Kafka: “The class *** is not in the trusted packages: [java.util, java.lang]”

在使用 Spring Boot 集成 Kafka 消息中间件时, 在将对象自动转变为对应的消息对象发送以及接受时遇到这个问题。这是由于 Spring 集成的 Kafka 在转换对象时对最想的序列化和反序列化的保护措施。在对应的配置文件中设置对应的生产者和消费者的对于序列化信赖包即可:

spring:
	kafka:
#    生产者的键和值的序列化对象
	    producer:
	      key-serializer: org.springframework.kafka.support.serializer.JsonSerializer
	      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
	#     配置生产者的 Json 序列化的可信赖包
	      properties:
	        spring:
	          json:
	            trusted:
	              packages: "org.graduate.service.Entity"
	
	#    消费者的键和值的反序列化对象
	    consumer:
	      key-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
	      value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
	      group-id: test-consumer-group
	#     配置消费者的 Json 反序列化的可信赖包
	      properties:
	        spring:
	          json:
	            trusted:
	              packages: "org.graduate.service.Entity"

这里添加 org.graduate.service.Entity为可信赖的包, 即可直接将该包下的所有类序列化为消息对象。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐