これが多くの Rx ルールに違反していることはわかっていますが、私はRxJava-JDBCが本当に好きで、チームメイトもそうしています。リレーショナル データベースは私たちの活動の中核であり、Rx も同様です。
ただし、として出力するのObservable<ResultSet>
ではなく、プルベースの Java 8Stream<ResultSet>
または Kotlinだけを使用したい場合がありSequence<ResultSet>
ます。しかし、RxJava-JDBC ライブラリーはObservable<ResultSet>
.
Observable<ResultSet>
したがって、拡張関数を使用して を に変換し、中間のコレクションや呼び出しSequence<ResultSet>
を行わない方法があるかどうか疑問に思っています。toBlocking()
以下はこれまでのところすべてですが、プッシュおよびプルベースのシステムに接続しようとして頭が回転しています。呼び出しResultSet
ごとにステートフルであるため、どちらもバッファリングできません。onNext()
これは不可能な作業ですか?
import rx.Observable
import rx.Subscriber
import java.sql.ResultSet
fun Observable<ResultSet>.asSequence() = object: Iterator<ResultSet>, Subscriber<ResultSet>() {
private var isComplete = false
override fun onCompleted() {
isComplete = true
}
override fun onError(e: Throwable?) {
throw UnsupportedOperationException()
}
override fun onNext(rs: ResultSet?) {
throw UnsupportedOperationException()
}
override fun hasNext(): Boolean {
throw UnsupportedOperationException()
}
override fun next(): ResultSet {
throw UnsupportedOperationException()
}
}.asSequence()