spring - 也许不公开或无效?使用 Spring 的 Websocket 和 Kafka
问题描述
当我尝试使用来自主题的数据(主题名称基于用户)并且在运行时我试图使用来自主题的消息时,但我收到以下错误。
原因:org.springframework.expression.spel.SpelEvaluationException:EL1008E:在“org.springframework.beans.factory.config.BeanExpressionContext”类型的对象上找不到属性或字段“consumerProperties” - 可能不是公共的或无效的?
这是我的代码
@Service
public class kafkaConsumerService {
private SimpMessagingTemplate template;
KafkaConsumerProperties consumerProperties;
@Autowired
public kafkaConsumerService(KafkaConsumerProperties consumerProperties, SimpMessagingTemplate template) {
this.consumerProperties=consumerProperties;
this.template=template;
}
@KafkaListener(topics = {"#{consumerProperties.getTopic()}"})
// @KafkaListener(topics="Chandan3706")
public void consume(@Payload Message message) {
System.out.println("from kafka topic::" + message);
template.convertAndSend("/chat/getMessage", message);
}
}
我的 KafkaConsumerProperties.class
@Component
@ConfigurationProperties(prefix="kafka.consumer")
public class KafkaConsumerProperties {
private String bootStrap;
private String group;
private String topic;
public String getBootStrap() {
return bootStrap;
}
public void setBootStrap(String bootStrap) {
this.bootStrap = bootStrap;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
@Override
public String toString() {
return "KafkaConsumerProperties [bootStrap=" + bootStrap + ", group=" + group + ", topic=" + topic + "]";
}
}
提前致谢
解决方案
由于您没有为您的KafkaConsumerProperties
组件提供任何 bean 名称,因此默认的是不大写的 class name。那是一个。
您在 bean 定义阶段使用的表达式@KafkaListener
是常规bean 定义阶段表达式,因此根对象是 some BeanExpressionContext
,但不是您的侦听器 bean,因为您尝试通过该属性进行访问。
不确定您是否需要KafkaConsumerProperties
此侦听器中的该属性,但表达式必须要求kafkaConsumerProperties
bean:
@Service
public class kafkaConsumerService {
private SimpMessagingTemplate template;
@Autowired
public kafkaConsumerService(SimpMessagingTemplate template) {
this.template=template;
}
@KafkaListener(topics = {"#{kafkaConsumerProperties.topic}"})
// @KafkaListener(topics="Chandan3706")
public void consume(@Payload Message message) {
System.out.println("from kafka topic::" + message);
template.convertAndSend("/chat/getMessage", message);
}
}
推荐阅读
- excel - 需要帮助解决选择框编译错误
- c++ - 如何初始化升压滚动窗口累加器?
- c - 什么是 Unix 中的“whiteout”(S_IFWHT)?
- javascript - 如何在fullCalendar中占据所有的日子?
- javascript - 如何打印多条消息但只有一个聊天应用程序的用户名
- wordpress - 调整 .htaccess 链接后导致重定向过多
- dart - 如何在飞镖中将字符串转换为Uuid
- firebase-authentication - Apple 登录 - 检索姓名和电子邮件
- reactjs - 如何在玩笑测试中共享设置和拆卸?
- database - 我可以删除显示无法连接的 postgres 数据库吗?