Error de TracingKafkaClientSupplier: “Las implementaciones de KafkaClientSupplier deben implementar el método getAdmin()”
Estoy actualizando una aplicación Spring Boot a Boot 2.6.1, Cloud 2021.0.0 y Cloud Stream 3.2.1.
Esta aplicación tiene una serie de KStreams como:
@Bean
fun processEvent(): Function<><id, eventreceived="">, KStream<id, updatedinfo?="">> {
...
}
Ahora la aplicación se bloquea al iniciar:
Caused by: org.springframework.kafka.KafkaException: No se pudo iniciar el stream; la excepción anidada es java.lang.UnsupportedOperationException: Las implementaciones de KafkaClientSupplier deben implementar el método getAdmin().
at org.springframework.kafka.config.StreamsBuilderFactoryBean.start(StreamsBuilderFactoryBean.java:359)
at org.springframework.cloud.stream.binder.kafka.streams.StreamsBuilderFactoryManager.start(StreamsBuilderFactoryManager.java:107)
... 15 tramas comunes omitidas
Caused by: java.lang.UnsupportedOperationException: Las implementaciones de KafkaClientSupplier deben implementar el método getAdmin().
at org.apache.kafka.streams.KafkaClientSupplier.getAdmin(KafkaClientSupplier.java:40)
at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:846)
at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:711)
at org.springframework.kafka.config.StreamsBuilderFactoryBean.start(StreamsBuilderFactoryBean.java:337)
... 16 tramas comunes omitidas
¿Cuál podría ser el problema aquí?
ACTUALIZACIÓN
Encontré que el clientSupplier problemático es brave.kafka.streams.TracingKafkaClientSupplier
:
Esta clase no implementa el método esperado de KafkaClientSupplier
(kafka-streams 3.0.0):
davy.ai
El problema parece estar relacionado con
KafkaClientSupplier
que no está implementado correctamente por la clasebrave.kafka.streams.TracingKafkaClientSupplier
. Esto probablemente se debe a una incompatibilidad de versiones entrespring-cloud-stream-binder-kafka
y la dependenciakafka-streams
en el proyecto. El TracingKafkaClientSupplier espera una versión diferente de KafkaStream que tiene una firma de método diferente paraKafkaClientSupplier.getAdmin()
.Actualizar el clienteProveedor problemático asegurando que se utiliza la versión de dependencia de kafka-streams compatible con
spring-cloud-stream-binder-kafka
podría resolver el problema. Alternativamente, modificar la clasebrave.kafka.streams.TracingKafkaClientSupplier
para implementar el métodogetAdmin()
en la interfazKafkaClientSupplier
podría ayudar a garantizar la compatibilidad con kafka-streams 3.0.0.