我有一个使用kafka消息的Spring Boot项目,并且Repositories连接到MYSQL的本地实例。
我的问题是,如果我在这里调用我的存储库函数来从我的数据库中获取字段。我得到空指针异常,发现存储库返回null。
但我也有休息控制器,并尝试从那里获取数据库数据,并且存储库工作正常。
问题是因为我无法在里面调用存储库函数吗?
这是我的卡夫卡消费者。
@Component
public class PromotionConsumer {
@Autowired
private ProducerTemplate producerTemplate;
//Repositories
private UserRepository User;
private PromotionRepository Promotion;
@KafkaListener(topics = "promotion")
public void receive(ConsumerRecord<?,?> consumerRecord) {
String kafkaRecommendationString = consumerRecord.value().toString();
String recommendationString = (kafkaRecommendationString.substring(0,kafkaRecommendationString.length() - 1)).substring(1);
String[] recommendationArray = recommendationString.split(",");
Integer user_id = Integer.parseInt(recommendationArray[0]);
Integer promotion_id = Integer.parseInt(recommendationArray[1]);
//Repository Functions
String first_name = User.findById(user_id).getfname();
String last_name = User.findById(user_id).getlname();
String promotion_name =Promotion.findById(promotion_id).getPromotionName();
String final_recommendation = promotion_name+" is recommended for "+first_name+" "+last_name;
producerTemplate.sendBody("direct:sendToMail", final_recommendation);
}
}