T - The type of items in P.P - The PagedResponse holding items of type T.public class PagedFluxBase<T,P extends PagedResponse<T>> extends 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.
Process each item in Flux
To process one item at a time, simply subscribe to this Flux.
pagedFluxBase
.log()
.subscribe(item -> System.out.println("Processing item " + item),
error -> System.err.println("Error occurred " + error),
() -> System.out.println("Completed processing."));
Process one page at a time
To process one page at a time, starting from the beginning, use byPage() method.
pagedFluxBase
.byPage()
.log()
.subscribe(page -> System.out.println("Processing page containing " + page.getItems()),
error -> System.err.println("Error occurred " + error),
() -> System.out.println("Completed processing."));
Process items starting from a continuation token
To process items one page at a time starting from any page associated with a continuation token, use
PagedFluxBase.byPage(String).
StringcontinuationToken = getContinuationToken(); pagedFluxBase .byPage(continuationToken) .log() .doOnSubscribe(ignored ->System.out.println( "Subscribed to paged flux processing pages starting from: " + continuationToken)) .subscribe(page ->System.out.println("Processing page containing " + page.getItems()), error ->System.err.println("Error occurred " + error), () ->System.out.println("Completed processing."));
PagedResponse,
Page,
Flux| Constructor and Description |
|---|
PagedFluxBase(Supplier<Mono<P>> firstPageRetriever)
Creates an instance of
PagedFluxBase that consists of only a single page of results. |
PagedFluxBase(Supplier<Mono<P>> firstPageRetriever,
Function<String,Mono<P>> nextPageRetriever)
Creates an instance of
PagedFluxBase. |
| Modifier and Type | Method and Description |
|---|---|
Flux<P> |
byPage()
Creates a flux of
PagedResponse starting from the first page. |
Flux<P> |
byPage(String continuationToken)
Creates a flux of
PagedResponse starting from the next page associated with the given
continuation token. |
void |
subscribe(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, bufferUntilChanged, bufferUntilChanged, bufferUntilChanged, 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, deferWithContext, delayElements, delayElements, delaySequence, delaySequence, delaySubscription, delaySubscription, delaySubscription, delayUntil, dematerialize, distinct, distinct, distinct, distinct, distinctUntilChanged, distinctUntilChanged, distinctUntilChanged, doAfterTerminate, doFinally, doFirst, 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, 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, subscribe, subscribeOn, subscribeOn, subscriberContext, subscriberContext, subscribeWith, switchIfEmpty, switchMap, switchMap, switchOnFirst, 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, transformDeferred, using, using, usingWhen, usingWhen, usingWhen, usingWhen, window, window, window, window, window, window, window, windowTimeout, windowTimeout, windowUntil, windowUntil, windowUntil, windowUntilChanged, windowUntilChanged, windowUntilChanged, windowWhen, windowWhile, windowWhile, withLatestFrom, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zip, zipWith, zipWith, zipWith, zipWith, zipWithIterable, zipWithIterablepublic PagedFluxBase(Supplier<Mono<P>> firstPageRetriever)
PagedFluxBase that consists of only a single page of results. The only
argument to this constructor therefore is a supplier that fetches the first (and known-only) page from P.
Code sample
// A supplier that fetches the first page of data from source/serviceSupplier<Mono<PagedResponse<Integer>>> firstPageRetrieverFunction = () -> getFirstPage();PagedFluxBase<Integer,PagedResponse<Integer>> pagedFluxBaseInstance = newPagedFluxBase<>(firstPageRetrieverFunction, nextPageRetriever);
firstPageRetriever - Supplier that retrieves the first pagepublic PagedFluxBase(Supplier<Mono<P>> firstPageRetriever, Function<String,Mono<P>> nextPageRetriever)
PagedFluxBase. The constructor takes in two arguments. The first
argument is a supplier that fetches the first page from P. The second argument is a
function that fetches subsequent pages from P.
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);PagedFluxBase<Integer,PagedResponse<Integer>> pagedFluxBase = newPagedFluxBase<>(firstPageRetriever, nextPageRetriever);
firstPageRetriever - Supplier that retrieves the first pagenextPageRetriever - Function that retrieves the next page given a continuation tokenpublic Flux<P> byPage()
PagedResponse starting from the first page.
Code sample
// Start processing the results from first page
pagedFluxBase.byPage()
.log()
.doOnSubscribe(ignoredVal -> System.out.println(
"Subscribed to paged flux processing pages starting from first page"))
.subscribe(page -> System.out.println("Processing page containing " + page.getItems()),
error -> System.err.println("Error occurred " + error),
() -> System.out.println("Completed processing."));
PagedFluxBase starting from the first pagepublic Flux<P> byPage(String continuationToken)
PagedResponse starting from the next page associated with the given
continuation token. To start from first page, use PagedFluxBase.byPage() instead.
Code sample
// Start processing the results from a page associated with the continuation tokenStringcontinuationToken = getContinuationToken(); pagedFluxBase.byPage(continuationToken) .log() .doOnSubscribe(ignoredVal ->System.out.println( "Subscribed to paged flux processing page starting from " + continuationToken)) .subscribe(page ->System.out.println("Processing page containing " + page.getItems()), error ->System.err.println("Error occurred " + error), () ->System.out.println("Completed processing."));
continuationToken - The continuation token used to fetch the next pagePagedFluxBase starting from the page associated with the continuation tokenpublic void subscribe(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
pagedFluxBase.subscribe(newBaseSubscriber<Integer>() { @Overrideprotected void hookOnSubscribe(Subscriptionsubscription) {System.out.println("Subscribed to paged flux processing items"); super.hookOnSubscribe(subscription); } @Overrideprotected void hookOnNext(Integervalue) {System.out.println("Processing item " + value); } @Overrideprotected void hookOnComplete() {System.out.println("Completed processing"); } });
subscribe in interface CorePublisher<T>subscribe in class Flux<T>coreSubscriber - The subscriber for this PagedFluxBaseCopyright © 2019 Microsoft Corporation. All rights reserved.