从kafkalistener配置读取

jc3wubiy  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(422)

我有一个spring boot应用程序,它的侦听器如下所示:

@KafkaListener(id = "demo", topics = "demo",
            containerFactory = "retryKafkaListenerContainerFactory")
    public void receive(ConsumerRecord<String, String> consumerRecord, Acknowledgment acknowledgment) throws Exception {

}

我有一个apache配置对象,我想用它从属性中读取主题。我知道我可以使用属性占位符来实现这一点。但是我使用的配置中有一些逻辑,所以我只想从配置对象中读取。具体如下:

@Inject
private Configuration configuration

我可以把主题 configuration.getString("kafka.consumer.topic") . 我试着这样使用: topics = "#{configuration.getString('kafka-generic.consumer.topics')}" 在kafkalistener注解的topics字段中,出现以下错误。

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'configuration' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:224)
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:94)
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:81)
    at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:51)
    at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:87)
    at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120)
    at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:242)
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161)
    ... 23 common frames omitted

有人能告诉我怎么用吗 configuration.getString("kafka.consumer.topic") 在Kafka的注解领域?

uwopmtnx

uwopmtnx1#

正在获取错误。
对于这样的问题,这是永远不够的;你必须显示实际的错误。
你可以用spel topics = "#{@somebean.someProperty}" or 主题= "#{@somebean.getString('...')}" .

相关问题