我正在一起试验Vert.x和Reactive Extensions(RXJava)并发现很难编写异步事件。
问题陈述
由于Vert.x中的大多数操作都是异步的,我正在尝试使用RxJava编写/链接它们。这就是我到目前为止所提出的。
public Observable<Boolean> insertBulkDataAndUpdateStatus (final List<JsonArray> inputs,final MyObject obj){
System.out.println("Total Rows to be inserted : "+inputs.size());
return getModifiedConnObservable()
.flatMap(conn ->{
System.out.println("Obtained connection .. ");
inputs.forEach(json->{
System.out.println("Inserting a row");
conn.updateWithParamsObservable(sql, json).subscribe();
});
//Checkpoint 1
System.out.println("updating completion status");
obj.complete();
updateStatus(conn,obj).subscribe(result->{
System.out.println("Committing");
commit(conn).subscribe();
});
return Observable.just(true);
});
}
Observable<SQLConnection> getModifiedConnObservable(){
return _jdbc.getConnectionObservable().flatMap(conn->{
return Observable.just(conn).doOnNext(con->con.setAutoCommitObservable(false).subscribe()).doOnUnsubscribe(conn::close);
});
}
虽然这种作品,但我确信这不是理想的方法。
来自迫切的背景,我发现很难一起掌握Rx概念和异步事件。非常感谢任何帮助。