Kafka spring 侦听器 spring 验证 headers

Kafka spring listener spring validation on headers

我正在尝试在 @KafkaListener 方法上使用 spring 验证注释。 我正在尝试以下操作:

@Component
@Validated
public class Consumer {
    @KafkaListener(topics = "${app.kafka.consumer.topic}", groupId = "${spring.kafka.consumer.group-id}")
    public String consume(@Payload @Valid @NotNull RequestObj request,
                          @Header(KafkaHeaders.RECEIVED_TOPIC) @Valid @NotEmpty String topic) {
        ...
    }
}

它似乎不起作用,这意味着未检查 @NotEmpty 注释。

我也配置了文档中提到的配置:

@Configuration
@EnableKafka
public class Config implements KafkaListenerConfigurer {

    @Autowired
    private LocalValidatorFactoryBean validator;
    ...

    @Override
    public void configureKafkaListeners(KafkaListenerEndpointRegistrar registrar) {
      registrar.setValidator(this.validator);
    }
}

但它只影响负载部分。

我想要实现的目标是否真的得到支持?

感谢您的帮助。

仅有效负载支持内置验证。

但是,@Header 有一个 required 属性,默认情况下为真,因此 null 值将被拒绝。

但是,RECEIVED_TOPIC永远不会是null