public interface AsyncStreamTask
StreamTask, an AsyncStreamTask may be augmented by implementing other interfaces, such as
 InitableTask, WindowableTask, or ClosableTask. The following invariants hold with these mix-ins:
 InitableTask.init - always the first method invoked on an AsyncStreamTask. It happens-before every subsequent
 invocation on AsyncStreamTask (for happens-before semantics, see https://docs.oracle.com/javase/tutorial/essential/concurrency/memconsist.html).
 CloseableTask.close - always the last method invoked on an AsyncStreamTask and all other AsyncStreamTask are guaranteed
 to happen-before it.
 AsyncStreamTask.processAsync - can run in either a serialized or parallel mode. In the serialized mode (task.max.concurrency=1),
 each invocation of processAsync is guaranteed to happen-before the next. In a parallel execution mode (task.max.concurrency>1),
 there is no such happens-before constraint and the AsyncStreamTask is required to coordinate any shared state.
 WindowableTask.window - in either above mode, it is called when no invocations to processAsync are pending and no new
 processAsync invocations can be scheduled until it completes. Therefore, a guarantee that all previous processAsync invocations
 happen before an invocation of WindowableTask.window. An invocation to WindowableTask.window is guaranteed to happen-before
 any subsequent processAsync invocations. The Samza engine is responsible for ensuring that window is invoked in a timely manner.
 Similar to WindowableTask.window, commits are guaranteed to happen only when there are no pending processAsync or WindowableTask.window
 invocations. All preceding invocations happen-before commit and commit happens-before all subsequent invocations.| Modifier and Type | Method and Description | 
|---|---|
| void | processAsync(IncomingMessageEnvelope envelope,
            MessageCollector collector,
            TaskCoordinator coordinator,
            TaskCallback callback)Called once for each message that this AsyncStreamTask receives. | 
void processAsync(IncomingMessageEnvelope envelope, MessageCollector collector, TaskCoordinator coordinator, TaskCallback callback)
envelope - Contains the received deserialized message and key, and also information regarding the stream and
 partition of which the message was received from.collector - Contains the means of sending message envelopes to the output stream. The collector must only
 be used during the current call to the process method; you should not reuse the collector between invocations
 of this method.coordinator - Manages execution of tasks.callback - Triggers the completion of the process.