【发布时间】:2020-06-28 17:16:43
【问题描述】:
我是被动的新手,并试图以有效的方式完成以下任务。我有一个表,每个用户都有事件。我正在尝试获取使用最新类别过滤的给定用户的每个事件名称的最新行。
table structure
user id , category , event name, details , insert timestamp, event text( payload of event)
反应式方法 // 调用 1 到 Cassandra
Mono<Event> latestCategory = repository.findByUserId(userId).sort().next(); // sort is by insert
timestamp;
//调用 2 到 Cassandra
Flux<Event> fluxEvents = repository.findByUserId(userId)
.groupBy(Event::name) //grouping by event name
.flatmap(grp -> {
grp.sort() // sorting for each event
grp.next().zipWith(latestCategory) // picking latest row for each event
.filter(eventWithLatestCategory ->
eventWithLatestCategory.getT1().category.equals(eventWithLatestCategory.getT2().category) //filtering by each category
.map(Tuple2::getT1)// picking latest event row for latest category
};
功能上一切正常,但问题是我看到表中的每一行都发生了 DB 调用。在命令式编程中,我可以通过一个 db 调用来实现它,然后应用上述逻辑。我怎样才能在反应式世界中做同样的事情?
enter code here
【问题讨论】:
标签: reactive-programming project-reactor reactive imperative-programming