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 a StreamingAsynchronousProcessor 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>