아... 진짜 반나절 넘게 삽질했다

 

로그 설정좀 제대로 하고 할껄 ...ㅜㅜㅜ

 

class is not in the trusted packages 에러는 아마 intellij에서 producer랑 consumer를 모듈로 각각분리해서

 

entity도 개별적으로 존재? 하는 상황일 것이다 (consumer와 producer의 entity의 package fullname이 다를경우)

 

예를들어 producer쪽 entity의 package를 포함한 fullname이 zzz.xxx.producer.MyEntity 이고

 

consumer쪽 entity의 package를 포함한 fullname이 zzz.xxx.consumer.MyEntity 라면

 

consumer쪽의 JsonDeserializer에서 class is not in the trusted packages 에러를 뿜뿜할 것이다.

 

왜냐면 직렬화, 역직렬화에서는 package 이름까지 포함하기때문이다 ...

 

해결은 JsonDeserializer에 addTrustedPackages() 메서드를 수정하면 된다.

 

    @Bean
    public ConsumerFactory<String, GCMPushEntity> pushEntityConsumerFactory() {
        JsonDeserializer<GCMPushEntity> deserializer = new JsonDeserializer<>(GCMPushEntity.class);
        deserializer.setRemoveTypeHeaders(false);
        deserializer.addTrustedPackages("*");
        deserializer.setUseTypeMapperForKey(true);

        Map<String, Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, deserializer);
        return new DefaultKafkaConsumerFactory<>(
                props,
                new StringDeserializer(),
                deserializer);
    }

 

진짜 개삽질했다...

 

 

 

https://stackoverflow.com/questions/51688924/spring-kafka-the-class-is-not-in-the-trusted-packages

 

Spring Kafka The class is not in the trusted packages

In my Spring Boot/Kafka application before the library update, I used the following class org.telegram.telegrambots.api.objects.Update in order to post messages to the Kafka topic. Right now I use ...

stackoverflow.com

 

+ Recent posts