K
- the type of the Map entry keyV
- the type of the Map entry valueR
- the type of value returned by the EntryProcessorpublic class StreamingAsynchronousProcessor<K,V,R> extends AbstractAsynchronousProcessor<K,V,R,Void>
EntryProcessor
wrapper class that allows for an asynchronous invocation of the underlying processor. Unlike AsynchronousProcessor
, this implementation does not collect the results of the underlying entry processor execution, but simply streams partial results to the provided partial results callback.
This allows for a much lower memory overhead if the complete result set does not to be realized on the client.
It's very important that the overriding implementations of onComplete()
, onResult(java.util.Map.Entry<K, R>)
and onException(java.lang.Throwable)
, and provided callbacks must be non-blocking. For example, any use of NamedCache
API is completely disallowed, with the only exception of asynchronous agents with disabled flow control.
The underlying entry processor is guaranteed to have been fully executed when onComplete()
is called.
Note 1: Neither this class nor its extensions need to be serializable. Only the underlying processor is serialized and sent to corresponding servers for execution.
Note 2: This feature is not available on Coherence*Extend clients.
AsynchronousProcessor
, SingleEntryAsynchronousProcessor
Modifier and Type | Field and Description |
---|---|
protected Consumer<? super Map.Entry<? extends K,? extends R>> |
f_onPartial
The user-provided callback that will be invoked for each partial result.
|
f_processor
m_control, m_iOrderId
Constructor and Description |
---|
StreamingAsynchronousProcessor(InvocableMap.EntryProcessor<K,V,R> processor, Consumer<? super Map.Entry<? extends K,? extends R>> onPartial)
Construct a StreamingAsynchronousProcessor for a given processor and one or more callbacks.
|
StreamingAsynchronousProcessor(InvocableMap.EntryProcessor<K,V,R> processor, int iUnitOrderId, Consumer<? super Map.Entry<? extends K,? extends R>> onPartial)
Construct an for a given processor, and one or more callbacks.
|
Modifier and Type | Method and Description |
---|---|
void |
onComplete()
Called after the processor has been notified about all possible partial results or failures and no more are forthcoming.
|
void |
onException(Throwable eReason)
Called if any part of the operation failed for any reason.
|
void |
onResult(Map.Entry<K,R> entry)
Called when there is a partial result of the asynchronous execution.
|
getProcessor, getUnitOfOrderId, process, processAll
bind, cancel, checkBacklog, complete, completeExceptionally, drainBacklog, flush, get, get, getCompletableFuture, getException, getResult, isCancelled, isCompletedExceptionally, isDone
public StreamingAsynchronousProcessor(InvocableMap.EntryProcessor<K,V,R> processor, Consumer<? super Map.Entry<? extends K,? extends R>> onPartial)
Important Note: All provided callbacks must be non-blocking. For example, any use of NamedCache
API is completely disallowed.
processor
- the underlying InvocableMap.EntryProcessor
onPartial
- a user-defined callback that will be called for each partial resultpublic StreamingAsynchronousProcessor(InvocableMap.EntryProcessor<K,V,R> processor, int iUnitOrderId, Consumer<? super Map.Entry<? extends K,? extends R>> onPartial)
Important Note: All provided callbacks must be non-blocking. For example, any use of NamedCache
API is completely disallowed.
processor
- the underlying InvocableMap.EntryProcessor
iUnitOrderId
- the unit-of-order id for this processoronPartial
- a user-defined callback that will be called for each partial resultpublic void onResult(Map.Entry<K,R> entry)
AbstractAsynchronousProcessor
For a given request, calls to this method and AbstractAsynchronousProcessor.onException(java.lang.Throwable)
may come concurrently.
For ordering guarantees across different processor invocations see AbstractAsynchronousProcessor.getUnitOfOrderId()
.
Note: Overriding implementations of this method must be non-blocking.
public void onException(Throwable eReason)
AbstractAsynchronousProcessor
"complete"
the operation.
Note: Overriding implementations of this method must be non-blocking.
onException
in class AbstractAsynchronousProcessor<K,V,R,Void>
eReason
- the reason of failurepublic void onComplete()
AbstractAsynchronousProcessor
InvocableMap
's methods, this method is guaranteed to be called once and only once.
Possible call back sequences are:
cache.invoke ... onResult onComplete cache.invoke ... onException onComplete cache.invokeAll ... onResult onException onException onResult onCompleteFor ordering guarantees across processors see
AbstractAsynchronousProcessor.getUnitOfOrderId()
.
Note: Overriding implementations of this method must be non-blocking.
onComplete
in class AbstractAsynchronousProcessor<K,V,R,Void>