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.