Caused by: java.lang.IllegalArgumentException: The class 'com.example.common.dto.Message' is not in the trusted packages: [java.util, java.lang, com.example.dto]. If you believe this class is safe to deserialize, please provide its name. If the serialization is only done by a trusted source, you can also enable trust all (*).
이 오류는 Kafka 데이터 직렬화/역직렬화 과정에서 발생하는 보안 관련 설정 문제이다. consumer 쪽에서 신뢰할 수 있는 패키지를 설정해줘야한다.
consumer-service의 application.yml을 다음과 같이 수정한다.
spring:
kafka:
consumer:
# ... 기존 설정들 ...
properties:
spring.json.trusted.packages: "com.example.common.dto" # 패키지 경로 수정
#또는
spring.json.trusted.packages: "*" # 모든 패키지를 신뢰
보안상의 이유로 기본적으로는 java.util과 java.lang 패키지만 신뢰하도록 되어있기 때문에, 우리가 만든 커스텀 클래스를 사용하려면 이러한 설정이 필요하다. 만약 producer 쪽에서도 Kafka로부터 메시지를 받는 경우가 있다면, 위와 같이 설정이 필요하다. 혹은 모듈의 경로를 적절하게 설정하는 것이 중요하다.