0

I am using spring cloud stream and function with Kafka binder. In case of error records, Records will be published to DLQ. The number of partitions of the original and DLQ topic are not same. So, in this case, a bean of type DlaPartitonFunction to be defined. (Below is use to default key parititoner of kafka)

 @Bean
    public DlqPartitionFunction partitionFunction() {
        return (group, record, ex) -> null;
    }

Eventhough we provide this bean, This is bean is not referenced/injected in KafkaMessageChannelBinder bean

KafkaMessageChannelBinder kafkaMessageChannelBinder(
            KafkaBinderConfigurationProperties configurationProperties,
            KafkaTopicProvisioner provisioningProvider,
            @Nullable ListenerContainerCustomizer<AbstractMessageListenerContainer<?, ?>> listenerContainerCustomizer,
            @Nullable MessageSourceCustomizer<KafkaMessageSource<?, ?>> sourceCustomizer,
            @Nullable ProducerMessageHandlerCustomizer<KafkaProducerMessageHandler<?, ?>> messageHandlerCustomizer,
            @Nullable ConsumerEndpointCustomizer<KafkaMessageDrivenChannelAdapter<?, ?>> consumerCustomizer,
            ObjectProvider<KafkaBindingRebalanceListener> rebalanceListener,
            ObjectProvider<DlqPartitionFunction> dlqPartitionFunction, // Not referenced
            ObjectProvider<DlqDestinationResolver> dlqDestinationResolver,
            ObjectProvider<ClientFactoryCustomizer> clientFactoryCustomizer,
            ObjectProvider<ConsumerConfigCustomizer> consumerConfigCustomizer,
            ObjectProvider<ProducerConfigCustomizer> producerConfigCustomizer,
            ProducerListener producerListener, KafkaExtendedBindingProperties kafkaExtendedBindingProperties
            ) {}

Am i missing anything apart from defining a bean?

rocky
  • 18
  • 3
  • 1
    Are you using multiple binders or even just a single named binder? If the latter, remove the binder name or add a binder customizer instead: https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#binder-customizer – Gary Russell May 11 '22 at 13:34
  • I was using Single named binder. As the each binder has its own application context, this bean was not in the context. After adding customizer, it worked. Thanks !!! – rocky May 11 '22 at 15:51

0 Answers0