我正在努力将反应式编程引入我的公司。我正在构建一个活动推荐系统的简单演示,以证明其性能优势。
我要面对的挑战之一是在一个流中增加另一个流的结果。我有一个工作示例,如下所示,但是我不确定这种方法是否存在任何问题。有人可以看看并提供任何潜在的改进。
public Flux<Integer> getRecommendedactivities(Long userId,String location,Integer limit) {
Flux<activityData> activities = activityDatabaseService.getByLocation(location);
Mono<Map<String,BigInteger>> userCategoryScores = userScoresDatabaseService.get(userId);
return activities
.zipWith(userCategoryScores.cache().repeat(),this::scoreactivitiesBasedOnUserCategoryScores)
.sort(compareactivityScoreStrength)
.map(ScoredactivityData::getactivityId)
.take(limit);
}
private ScoredactivityData scoreactivitiesBasedOnUserCategoryScores(activityData deal,Map<String,BigInteger> categoryScores){
//This method combines the deal score and user category scores to come up with a final score
}
谢谢, 卡尔