Spring Boot Kafka Consumer to Repository Records

时间:2018-02-08 10:06:06

标签: java mysql spring-boot apache-kafka spring-kafka

我有一个使用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);
  }
} 

0 个答案:

没有答案