从配置中读取kafkalistener
Read from configuration kafkalistener
我有一个 spring 启动应用程序,它的侦听器如下:
@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 注释的主题字段中,但出现以下错误。
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
有人可以告诉我如何在 KafkaListener 注释的主题字段中使用 configuration.getString("kafka.consumer.topic")
吗?
getting errors.
对于这样的问题,这永远不够;你必须显示实际错误。
您可以使用 SpEL topics = "#{@somebean.someProperty}" or
topics = "#{@somebean.getString('...')}"
.
我有一个 spring 启动应用程序,它的侦听器如下:
@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 注释的主题字段中,但出现以下错误。
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
有人可以告诉我如何在 KafkaListener 注释的主题字段中使用 configuration.getString("kafka.consumer.topic")
吗?
getting errors.
对于这样的问题,这永远不够;你必须显示实际错误。
您可以使用 SpEL topics = "#{@somebean.someProperty}" or
topics = "#{@somebean.getString('...')}"
.