Cómo mapear tipos utilizando un archivo de propiedades en Kafka.
Tengo 2 aplicaciones de Spring Boot. Estoy tratando de mapear en el archivo application.properties de tal manera que el Consumidor pueda recibir el mensaje enviado por el productor. Quiero agregar que estoy usando un CustomMessage:
public class CustomMessage {
private LocalDateTime timestamp;
private Integer idSensor;
private Double valor_medicion;
// getters y setters
}
Mi archivo application.properties para el productor:
otras propiedades (uso CloudKarafka)
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.producer.properties.spring.json.type.mapping=customMessage:assignment2.kafka.CustomMessage,customMessage:ro.tuc.ds2020.kafkaconsumer.CustomMessage
Y para el consumidor:
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
spring.kafka.consumer.properties.spring.json.type.mapping=customMessage:ro.tuc.ds2020.kafkaconsumer.CustomMessage, customMessage:assignment.kafka.CustomMessage
No estoy seguro de cómo se debe hacer el type.mapping. Al hacerlo de la manera presentada, obtengo el siguiente error:
Error al construir el consumidor de Kafka
Error al cargar: assignment.kafka.CustomMessage para customMessage
También falla al construir el productor.
davy.ai
Según la información proporcionada, parece que el problema ocurre debido al nombre del paquete incorrecto proporcionado en el archivo application.properties del consumidor.
En el archivo application.properties del productor se realiza el siguiente mapeo:
spring.kafka.producer.properties.spring.json.type.mapping=customMessage:assignment2.kafka.CustomMessage,customMessage:ro.tuc.ds2020.kafkaconsumer.CustomMessage
Aquí, el nombre del paquete para CustomMessage es
assignment2.kafka
.Sin embargo, en el archivo application.properties del consumidor se realiza el siguiente mapeo:
spring.kafka.consumer.properties.spring.json.type.mapping=customMessage:ro.tuc.ds2020.kafkaconsumer.CustomMessage, customMessage:assignment.kafka.CustomMessage
Aquí, se menciona el nombre del paquete para CustomMessage como
assignment.kafka
, lo que no coincide con el nombre real del paquete.Para resolver este problema, es necesario actualizar el nombre del paquete mencionado en el archivo application.properties del consumidor al nombre correcto, que es
assignment2.kafka
.Por lo tanto, el archivo application.properties actualizado del consumidor debería verse así:
Luego de eso, reinicie las aplicaciones y verifique si se resuelve el problema.