根据标头反序列化之前过滤消息

时间:2018-12-19 01:18:29

标签: spring-kafka

有时,可以根据标题值在反序列化之前过滤掉邮件。使用Spring Kafka可以在这种情况下使用任何现有模式吗?我在考虑实现类似于ErrorHandlingDeserializer的方法,除了委托也将过滤谓词也作为属性。有什么建议么?谢谢。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用ErrorHandlingDeserializer2(代替ErrorHandlingDeserializer)所使用的相同技术来返回“标记”对象,而不是进行反序列化,然后添加一个RecordFilterStrategy ,将带有此类对象的记录过滤到侦听器(使用@KafkaListener或使用显式侦听器使用过滤适配器的容器工厂)。

编辑

Spring Boot并添加过滤器...

@Bean
public ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory(
        ConcurrentKafkaListenerContainerFactoryConfigurer configurer,
        ConsumerFactory<Object, Object> kafkaConsumerFactory) {
    ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();
    configurer.configure(factory, kafkaConsumerFactory);
    kafkaConsumerFactory.setsetRecordFilterStrategy(myFilter());
    return factory;
}