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