如何创建无限项的可观察对象

时间:2019-08-16 23:07:41

标签: rx-java2

我有一个发射器,可以不断发射物品。如何在RxJava 2中将发射器发出的项目流转换为Observable(或其中一种)。

2 个答案:

答案 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);
  }
}