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
。
我正在尝试在 @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
。