When @KafkaListener accepts ConsumerRecords<String, SomeClass> records as a parameter, defined factory.setRecordFilterStrategy(new RecordFilterStrategy<String, SomeClass>() { is not called. However if we change listener to accept List<SomeClass>, filter will be called. It seems little bit counterintuitive and I did not see this anywhere documented. Anyways, I don't see the reason, why "should do the filtering" should be dependent on type in listener...