【发布时间】:2020-09-25 22:56:42
【问题描述】:
我正在努力将反应式编程引入我的公司。我正在构建一个活动推荐系统的简单演示,以证明性能优势。
我遇到的一个挑战是用另一个流的结果来丰富一个流中的结果。我有一个工作示例,如下所示,但我不确定这种方法是否存在任何问题。有人可以看看并提供任何潜在的改进。
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
}
谢谢, 卡尔
【问题讨论】:
标签: java reactive-programming project-reactor reactive-streams