1
resposta

Erro no serviço de Stream

Oi, tudo bem?

Na execução do microsserviço de Streams Kafka, eu encontro o erro no console: java.lang.IllegalArgumentException: The class 'br.com.mensageria_kafka.pix_producer.dto.PixResponseDto' is not in the trusted packages: [java.util, java.lang, br.com.mensageria_kafka.pix.dto, br.com.mensageria_kafka.pix.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 (). at org.springframework.kafka.support.mapping.DefaultJackson2JavaTypeMapper.getClassIdType(DefaultJackson2JavaTypeMapper.java:123) ~[spring-kafka-3.3.1.jar:3.3.1]

Mas eu não tenho o pacote 'br.com.mensageria_kafka.pix_producer.dto.PixResponseDto' em nenhum dos serviços. Não sei por que está tentando usar esse pacote para desserialização.

Vou deixar o repositório, caso alguém queira ver https://github.com/gustavoszo/microsservicos-java-spring.git

1 resposta

Olá, Gustavo, tudo bem?

O erro indica que a classe br.com.mensageria_kafka.pix_producer.dto.PixResponseDto não está listada nos pacotes confiáveis, e isso está causando a exceção IllegalArgumentException.

Para resolver esse problema, você pode adicionar o pacote br.com.mensageria_kafka.pix_producer.dto à lista de pacotes confiáveis. Isso pode ser feito configurando o JsonDeserializer para incluir esse pacote na lista de pacotes confiáveis. Aqui está um exemplo de como você pode fazer isso:

import org.springframework.kafka.support.serializer.JsonDeserializer;

// ...

public class PixSerdes extends Serdes.WrapperSerde<PixDTO> {

    public PixSerdes() {
        super(new JsonSerializer<>(), new JsonDeserializer<>(PixDTO.class, false));
        ((JsonDeserializer<PixDTO>) deserializer()).addTrustedPackages("br.com.mensageria_kafka.pix_producer.dto");
    }

    public static Serde<PixDTO> serdes() {
        JsonSerializer<PixDTO> serializer = new JsonSerializer<>();
        JsonDeserializer<PixDTO> deserializer = new JsonDeserializer<>(PixDTO.class);
        deserializer.addTrustedPackages("br.com.mensageria_kafka.pix_producer.dto");
        return Serdes.serdeFrom(serializer, deserializer);
    }
}

Certifique-se de ajustar o caminho do pacote conforme necessário. Além disso, se você tem certeza de que todas as fontes de dados são confiáveis, outra opção seria configurar o JsonDeserializer para confiar em todos os pacotes, usando "*" como o nome do pacote confiável, mas isso deve ser feito com cautela devido a questões de segurança.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!