【发布时间】:2021-12-09 12:51:06
【问题描述】:
我有一个需要在一系列嵌套循环中的代码逻辑。 这是示例:
String q = null;
for(C c in getC()){
if(Valid(c)){
String Id = c.Id;
List<M> mList = getM(Id);
for(M m in mList){
q = Message.Format("query:{}",m);
List<D> dList = getD(Id, q);
sendDToKafka(dList);
}
}
}
我正在尝试使用项目反应器将上述逻辑转换为反应式。 我到目前为止的代码:
Flux.fromIterable(getC())
.map(c -> c.getId)
.doOnNext(cId -> getM(cId))
.map(m -> m.trim())
.doOnNext(m -> getD()) // need to pass in query and Id to getD()
.subscribe();
我面临的问题很少:
- 如何将 IsValid() 方法合并到查询中。
- 我需要在两个地方重用我在第一张地图 - .map(c -> c.getId) 上获得的 cId 值。如果不立即在下一步中使用,我如何跟踪该值。
- 有没有办法在响应式查询中形成 q 变量以作为参数传递给 getD()
- 如果代码是一种有效的方法,我将非常感谢任何反馈。
【问题讨论】:
标签: java spring-boot reactive-programming project-reactor