Fixing a binary compatibility issue

In Spring Kafka, the class DeadLetterPublishingRecoverer is only source
level compatible with Spring Kafka 2.3.7, it is not binary compatible
since a constructor started to use KafkaOperations instead of KafkaTemplate
in 2.5. Fixing this issue by explicitly using KafkaOperations for compile.
This commit is contained in:
Soby Chacko
2020-05-22 15:43:04 -04:00
parent f8b97ea5de
commit 0ac83e510f

View File

@@ -40,6 +40,7 @@ import org.springframework.cloud.stream.binder.kafka.utils.DlqPartitionFunction;
import org.springframework.context.ApplicationContext;
import org.springframework.core.MethodParameter;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaOperations;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.listener.DeadLetterPublishingRecoverer;
@@ -99,8 +100,7 @@ final class KafkaStreamsBinderUtils {
new ExtendedProducerProperties<>(
extendedConsumerProperties.getExtension().getDlqProducerProperties()),
binderConfigurationProperties);
KafkaTemplate<byte[], byte[]> kafkaTemplate = new KafkaTemplate<>(producerFactory);
KafkaOperations<byte[], byte[]> kafkaTemplate = new KafkaTemplate<>(producerFactory);
BiFunction<ConsumerRecord<?, ?>, Exception, TopicPartition> destinationResolver =
(cr, e) -> new TopicPartition(extendedConsumerProperties.getExtension().getDlqName(),