我尝试在@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);
}
}但它只影响有效载荷部分。
我试图实现的目标真的得到了支持吗?
谢谢你的帮助。
发布于 2021-11-22 14:14:25
内置验证仅支持有效负载。
但是,@Header具有required属性,默认情况下该属性为真,因此null值将被拒绝。
但是,RECEIVED_TOPIC永远不会是null。
https://stackoverflow.com/questions/70061445
复制相似问题