T - The type of items in a PagedResponsepublic class PagedFlux<T>
extends reactor.core.publisher.Flux<T>
PagedResponse and
also provides the ability to operate on individual items. When processing the response by page,
each response will contain the items in the page as well as the request details like
status code and headers.
To process one item at a time, simply subscribe to this flux as shown below
Code sample
// Subscribe to process one item at a time
pagedFlux
.log()
.doOnSubscribe(
ignoredVal -> System.out.println("Subscribed to paged flux processing items"))
.doOnNext(item -> System.out.println("Processing item " + item))
.doOnComplete(() -> System.out.println("Completed processing"))
.subscribe();
To process one page at a time, use PagedFlux.byPage() method as shown below
Code sample
// Subscribe to process one page at a time from the beginning
pagedFlux
.byPage()
.log()
.doOnSubscribe(ignoredVal -> System.out
.println("Subscribed to paged flux processing pages starting from first page"))
.doOnNext(page -> System.out.println("Processing page containing " + page.items()))
.doOnComplete(() -> System.out.println("Completed processing"))
.subscribe();
To process items one page at a time starting from any page associated with a continuation token,
use PagedFlux.byPage(String) as shown below
Code sample
// Subscribe to process one page at a time starting from a page associated with // a continuation tokenStringcontinuationToken = getContinuationToken(); pagedFlux .byPage(continuationToken) .log() .doOnSubscribe(ignoredVal ->System.out .println("Subscribed to paged flux processing pages starting from first page")) .doOnNext(page ->System.out.println("Processing page containing " + page.items())) .doOnComplete(() ->System.out.println("Completed processing")) .subscribe();
PagedResponse,
Page,
Flux| Constructor and Description |
|---|
PagedFlux(Supplier<reactor.core.publisher.Mono<PagedResponse<T>>> firstPageRetriever,
Function<String,reactor.core.publisher.Mono<PagedResponse<T>>> nextPageRetriever)
Creates an instance of
PagedFlux. |
| Modifier and Type | Method and Description |
|---|---|
reactor.core.publisher.Flux<PagedResponse<T>> |
byPage()
Creates a flux of
PagedResponse starting from the first page. |
reactor.core.publisher.Flux<PagedResponse<T>> |
byPage(String continuationToken)
Creates a flux of
PagedResponse starting from the next page associated with the given
continuation token. |
void |
subscribe(reactor.core.CoreSubscriber<? super T> coreSubscriber)
Subscribe to consume all items of type
T in the sequence respectively. |
all, any, as, blockFirst, blockFirst, blockLast, blockLast, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, buffer, bufferTimeout, bufferTimeout, bufferTimeout, bufferTimeout, bufferUntil, bufferUntil, bufferWhen, bufferWhen, bufferWhile, cache, cache, cache, cache, cache, cache, cancelOn, cast, checkpoint, checkpoint, checkpoint, collect, collect, collectList, collectMap, collectMap, collectMap, collectMultimap, collectMultimap, collectMultimap, collectSortedList, collectSortedList, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, combineLatest, compose, concat, concat, concat, concat, concatDelayError, concatDelayError, concatDelayError, concatDelayError, concatMap, concatMap, concatMapDelayError, concatMapDelayError, concatMapDelayError, concatMapIterable, concatMapIterable, concatWith, concatWithValues, count, create, create, defaultIfEmpty, defer, delayElements, delayElements, delaySequence, delaySequence, delaySubscription, delaySubscription, delaySubscription, delayUntil, dematerialize, distinct, distinct, distinct, distinct, distinctUntilChanged, distinctUntilChanged, distinctUntilChanged, doAfterTerminate, doFinally, doOnCancel, doOnComplete, doOnDiscard, doOnEach, doOnError, doOnError, doOnError, doOnNext, doOnRequest, doOnSubscribe, doOnTerminate, elapsed, elapsed, elementAt, elementAt, empty, error, error, error, expand, expand, expandDeep, expandDeep, filter, filterWhen, filterWhen, first, first, flatMap, flatMap, flatMap, flatMap, flatMapDelayError, flatMapIterable, flatMapIterable, flatMapSequential, flatMapSequential, flatMapSequential, flatMapSequentialDelayError, from, fromArray, fromIterable, fromStream, fromStream, generate, generate, generate, getPrefetch, groupBy, groupBy, groupBy, groupBy, groupJoin, handle, hasElement, hasElements, hide, ignoreElements, index, index, interval, interval, interval, interval, join, just, just, last, last, limitRate, limitRate, limitRequest, log, log, log, log, log, log, map, materialize, merge, merge, merge, merge, merge, merge, mergeDelayError, mergeOrdered, mergeOrdered, mergeOrdered, mergeOrderedWith, mergeSequential, mergeSequential, mergeSequential, mergeSequential, mergeSequential, mergeSequential, mergeSequentialDelayError, mergeSequentialDelayError, mergeSequentialDelayError, mergeWith, metrics, name, never, next, ofType, onAssembly, onAssembly, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureBuffer, onBackpressureDrop, onBackpressureDrop, onBackpressureError, onBackpressureLatest, onErrorContinue, onErrorContinue, onErrorContinue, onErrorMap, onErrorMap, onErrorMap, onErrorResume, onErrorResume, onErrorResume, onErrorReturn, onErrorReturn, onErrorReturn, onErrorStop, onLastAssembly, onTerminateDetach, or, parallel, parallel, parallel, publish, publish, publish, publish, publishNext, publishOn, publishOn, publishOn, push, push, range, reduce, reduce, reduceWith, repeat, repeat, repeat, repeat, repeatWhen, replay, replay, replay, replay, replay, replay, retry, retry, retry, retry, retryBackoff, retryBackoff, retryBackoff, retryWhen, sample, sample, sampleFirst, sampleFirst, sampleTimeout, sampleTimeout, scan, scan, scanWith, share, single, single, singleOrEmpty, skip, skip, skip, skipLast, skipUntil, skipUntilOther, skipWhile, sort, sort, startWith, startWith, startWith, subscribe, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, subscribeOn, subscriberContext, subscriberContext, subscribeWith, switchIfEmpty, switchMap, switchMap, switchOnNext, switchOnNext, tag, take, take, take, takeLast, takeUntil, takeUntilOther, takeWhile, then, then, thenEmpty, thenMany, timeout, timeout, timeout, timeout, timeout, timeout, timeout, timestamp, timestamp, toIterable, toIterable, toIterable, toStream, toStream, toString, transform, using, using, usingWhen, usingWhen, usingWhen, window, window, window, window, window, window, window, windowTimeout, windowTimeout, windowUntil, windowUntil, windowUntil, windowWhen, windowWhile, windowWhile, withLatestFrom, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWith, zipWith, zipWith, zipWithIterable, zipWithIterablepublic PagedFlux(Supplier<reactor.core.publisher.Mono<PagedResponse<T>>> firstPageRetriever, Function<String,reactor.core.publisher.Mono<PagedResponse<T>>> nextPageRetriever)
PagedFlux. The constructor takes in two arguments. The first
argument is a supplier that fetches the first page of T. The second argument is a
function that fetches subsequent pages of T
Code sample
// A supplier that fetches the first page of data from source/serviceSupplier<Mono<PagedResponse<Integer>>> firstPageRetriever = () -> getFirstPage(); // A function that fetches subsequent pages of data from source/service given a continuation tokenFunction<String,Mono<PagedResponse<Integer>>> nextPageRetriever = continuationToken -> getNextPage(continuationToken);PagedFlux<Integer> pagedFlux = newPagedFlux<>(firstPageRetriever, nextPageRetriever);
firstPageRetriever - Supplier that retrieves the first pagenextPageRetriever - Function that retrieves the next page given a continuation tokenpublic reactor.core.publisher.Flux<PagedResponse<T>> byPage()
PagedResponse starting from the first page.
Code sample
// Start processing the results from first page
pagedFlux.byPage()
.log()
.doOnSubscribe(ignoredVal -> System.out
.println("Subscribed to paged flux processing pages starting from first page"))
.doOnNext(page -> System.out.println("Processing page containing " + page.items()))
.doOnComplete(() -> System.out.println("Completed processing"))
.subscribe();
PagedFlux starting from the first pagepublic reactor.core.publisher.Flux<PagedResponse<T>> byPage(String continuationToken)
PagedResponse starting from the next page associated with the given
continuation token. To start from first page, use PagedFlux.byPage() instead.
Code sample
// Start processing the results from a page associated with the continuation tokenStringcontinuationToken = getContinuationToken(); pagedFlux.byPage(continuationToken) .log() .doOnSubscribe(ignoredVal ->System.out.println( "Subscribed to paged flux processing page starting from " + continuationToken)) .doOnNext(page ->System.out.println("Processing page containing " + page.items())) .doOnComplete(() ->System.out.println("Completed processing")) .subscribe();
continuationToken - The continuation token used to fetch the next pagePagedFlux starting from the page associated with the continuation tokenpublic void subscribe(reactor.core.CoreSubscriber<? super T> coreSubscriber)
T in the sequence respectively.
This is recommended for most common scenarios. This will seamlessly fetch next
page when required and provide with a Flux of items.
Code sample
pagedFlux.log()
.doOnSubscribe(ignoredVal -> System.out.println("Subscribed to paged flux processing items"))
.doOnNext(item -> System.out.println("Processing item " + item))
.doOnComplete(() -> System.out.println("Completed processing"))
.subscribe();
Copyright © 2019 Microsoft Corporation. All rights reserved.