首页 > 解决方案 > 我们可以将动态属性放入@KafkaListener(properties = {max.pool.size.ms: 三元运算符

问题描述

是否可以在@KafkaListener 中加入动态三元条件?

标签: kafka-consumer-apispring-kafka

解决方案


是的; 看到这个测试用例

@KafkaListener(id = "#{'qux'}", topics = "annotated4",
        containerFactory = "kafkaManualAckListenerContainerFactory", containerGroup = "qux#{'Group'}",
        properties = {
                "max.poll.interval.ms:#{'${poll.interval:60000}'}",
                ConsumerConfig.MAX_POLL_RECORDS_CONFIG + "=#{'${poll.recs:100}'}"
        })

在这种情况下,它会加载poll.interval属性,如果缺失,则使用 60000。

您可以使用任何 SpEL 表达式,例如

#{@someBean.someProperty}

#{'${foo.prop}' == null ? '${bar.prop:60000}' : '${foo.prop}'

推荐阅读