我有一个发射器,可以不断发射物品。如何在RxJava 2中将发射器发出的项目流转换为Observable(或其中一种)。
答案 0 :(得分:0)
您要流数据吗?假设我正在尝试从数据库中流式传输数据。
return Observable.using(
() -> getQueryConnectionSubscription(sql),
connectionSubscription -> Observable.create((subscriber) -> {
ResultSet resultSet = connectionSubscription.getResultSet();
int rowNumber = 0;
while (!subscriber.isDisposed() && resultSet.next()) {
T row = rowMapper.mapRow(resultSet, rowNumber);
subscriber.onNext(row);
}
subscriber.onComplete();
}),
(queryConnectionSubscription) -> {
queryConnectionSubscription.close();
});
我不确定您的数据源是什么。但是,每当有数据时,您都会继续调用Subscriber.onNext(data)。 如果您需要完整的详细信息,请查看链接 https://www.developerthoughtsonline.com/2019/02/02/streaming-with-reactive-java-and-spring-jdbctemplate/
答案 1 :(得分:0)
要解决此问题,我选择“主题”而不是“可观察”。下面是代码示例。
public class ItemEmitter {
private BehaviorSubject<Object> subject = BehaviorSubject.create();
public void onEvent(Object item) {
subject.onNext(item);
}
public Flowable<Object> getObservable() {
return subject.toFlowable(BackpressureStrategy.LATEST);
}
}