我有一个消费传入消息的Verticle。每个消息将是一个顶点JsonObject
,其中包含一个顶点JsonArray
。我想为该数组中的每个元素执行逻辑。逻辑本身包含在单独的顶点中。第二个顶点使用rxVertx
。它定义了几个使用者,每个使用者都委派了单独的方法,所有方法都返回一个Observable
。
我的问题是:如何:
JsonArray
Observables
一起使用的使用者。在第一个垂直版本中,尝试了以下操作:
EventBus eb = rxVertx.eventBus();
JsonArray array= incomingMessage.getJsonArray(KEY);
List<Object> list = array.getList();
Observable<Object> observable = Observable.fromArray(list);
observable.flatMapSingle(s -> {
eb.rxSend(SECOND_VERTICLE_ADDRESS, s);
}).subscribe();
由于以下原因,对flatMapSingle
的调用无法编译
The method flatMapSingle(Function<? super Object,? extends SingleSource<? extends R>>) in the type Observable<Object> is not applicable for the arguments ((<no type> s) -> {})
正确的方法是什么?非常感谢
答案 0 :(得分:1)
如果使用代码块定义flatMapSingle
函数参数,则必须使用return
关键字:
observable.flatMapSingle(s -> {
return eb.rxSend(SECOND_VERTICLE_ADDRESS, s);
}).subscribe(reply -> {
// Handle each reply
});
请注意,flatMapSingle
不保证答复的顺序与传入消息的顺序相同。如果需要保证,请使用concatMapSingle
。