Seria uma boa ideia usar o gson serializer para serializar a classe para string e utilizar o VALUE_SERIALIZER_CLASS_CONFIG como string mesmo ?
Seria uma boa ideia usar o gson serializer para serializar a classe para string e utilizar o VALUE_SERIALIZER_CLASS_CONFIG como string mesmo ?
Olá, Marcelo. Tudo bem?
Usar o Gson para serializar objetos em strings é uma prática comum, especialmente quando você deseja transformar objetos Java em um formato que pode ser facilmente transmitido ou armazenado. No contexto do Kafka, isso pode ser uma boa ideia, principalmente se você está lidando com dados que serão consumidos por diferentes sistemas que podem não estar em Java. Serializar para JSON torna seus dados mais interoperáveis.
Ao usar o VALUE_SERIALIZER_CLASS_CONFIG
como string, você estará configurando o produtor para enviar os dados serializados como texto. Isso é muito válido, mas é importante lembrar que o JSON pode aumentar o tamanho da mensagem, o que pode impactar a performance dependendo do volume de dados que você está transmitindo.
Aqui está um exemplo de como você poderia configurar isso em seu produtor Kafka:
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
MyClass myObject = new MyClass();
String json = new Gson().toJson(myObject);
ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", json);
producer.send(record);
Garanta que o consumidor também está preparado para desserializar as mensagens JSON. Você pode usar o Gson no consumidor para transformar a string de volta em um objeto Java.
Espero ter ajudado e bons estudos!