spring-boot - @Autowired 错误:变量 kafkaTemplate 可能尚未初始化
问题描述
kafkaTemplate 被注入
@Bean
@Qualifier("kafkaTemplate")
public KafkaTemplate<String, QuoteResponseDetails> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
并且您想使用注入的代码。
@WebSocket(maxTextMessageSize = 64 * 1024)
@RequiredArgsConstructor
public class QuoteSocket {
@Autowired
private final KafkaTemplate<String, QuoteResponseDetails> kafkaTemplate;
private static final String TOPIC = "kafka-spring-producer-coin-test";
private final CountDownLatch closeLatch;
@SuppressWarnings("unused")
private Session session;
public QuoteSocket(){
this.closeLatch = new CountDownLatch(1);
}
@OnWebSocketMessage
public void onMessage(String msg) throws JsonProcessingException, ParseException {
ObjectMapper mapper = new ObjectMapper();
System.out.printf("Got msg: %s%n",msg);
JSONParser parser = new JSONParser();
JSONObject obj = (JSONObject)parser.parse(msg);
Set key = obj.keySet();
if (!key.contains("status")){
QuoteResponse quote = mapper.readValue(msg, QuoteResponse.class);
System.out.println(quote.getContent());
kafkaTemplate.send(TOPIC,quote.getContent());
}
}
}
不能使用 kafkaTemplate。我有两个疑问。首先是它不能从 Websocket 线程访问。另一个怀疑是调用位置似乎是错误的。它是什么?当我从 websocket 收到消息时,我想将其发送到 kafka。为什么?
解决方案
推荐阅读
- c# - 分片渲染动态 TableLayoutPanel WF
- html - HighCharts Angular - 来自 API 的数据未显示在图表中
- java - 检查给定的单词是否是回文
- woocommerce - woocommerce 仅在结帐时预先填充国家/地区
- flutter - 如何根据 sqlite 数据库更改图标颜色?
- google-oauth - 如何将 google oauth 用户帐户转换为 php 中的服务帐户?
- meshlab - 如何将 e57 文件导入 Meshlab
- javascript - nodejs - 如何管理快速上传的多个文件
- recursion - 大家好,我正在尝试在 prolog 中编写此公式,感谢您的帮助:)
- protocol-buffers - 如何使用 Protobuf.js 逐条显示每条消息?