【问题标题】:Kafka spring listener spring validation on headersKafka Spring listener Spring对标头的验证
【发布时间】:2021-12-31 19:09:37
【问题描述】:

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

@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);
    }
}

但它只影响有效载荷部分。

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

感谢您的帮助。

【问题讨论】:

    标签: java spring apache-kafka spring-kafka


    【解决方案1】:

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

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

    但是,RECEIVED_TOPIC 永远不会是 null

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2020-04-24
      • 1970-01-01
      • 2017-02-15
      相关资源
      最近更新 更多