Class ProcessorContextImpl
- java.lang.Object
-
- org.apache.kafka.streams.processor.internals.AbstractProcessorContext
-
- org.apache.kafka.streams.processor.internals.ProcessorContextImpl
-
- All Implemented Interfaces:
InternalProcessorContext,RecordCollector.Supplier,ProcessorContext
public class ProcessorContextImpl extends AbstractProcessorContext implements RecordCollector.Supplier
-
-
Field Summary
-
Fields inherited from class org.apache.kafka.streams.processor.internals.AbstractProcessorContext
cache, currentNode, NONEXIST_TOPIC, recordContext
-
Fields inherited from interface org.apache.kafka.streams.processor.internals.InternalProcessorContext
BYTEARRAY_VALUE_SERIALIZER, BYTES_KEY_SERIALIZER
-
-
Constructor Summary
Constructors Constructor Description ProcessorContextImpl(TaskId id, StreamsConfig config, ProcessorStateManager stateMgr, StreamsMetricsImpl metrics, ThreadCache cache)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidcommit()Requests a commit.ProcessorNode<?,?>currentNode()Get the currentProcessorNode<K,V>
voidforward(K key, V value)Forwards a key/value pair to all downstream processors.<K,V>
voidforward(K key, V value, int childIndex)Deprecated.<K,V>
voidforward(K key, V value, java.lang.String childName)Deprecated.<K,V>
voidforward(K key, V value, To to)Forwards a key/value pair to the specified downstream processors.StateStoregetStateStore(java.lang.String name)Get the state store given the store name.voidlogChange(java.lang.String storeName, org.apache.kafka.common.utils.Bytes key, byte[] value, long timestamp)longoffset()Returns the offset of the current input record; could be -1 if it is not available (for example, if this method is invoked from the punctuate call).intpartition()Returns the partition id of the current input record; could be -1 if it is not available (for example, if this method is invoked from the punctuate call).RecordCollectorrecordCollector()Get the record collector.ProcessorRecordContextrecordContext()Returns the currentRecordContextvoidregister(StateStore store, StateRestoreCallback stateRestoreCallback)Registers and possibly restores the specified storage engine.voidregisterCacheFlushListener(java.lang.String namespace, ThreadCache.DirtyEntryFlushListener listener)Register a dirty entry flush listener for a particular namespaceCancellableschedule(long intervalMs, PunctuationType type, Punctuator callback)Deprecated.Cancellableschedule(java.time.Duration interval, PunctuationType type, Punctuator callback)Schedules a periodic operation for processors.voidsetRecordContext(ProcessorRecordContext recordContext)ProcessorStateManagerstateManager()longtimestamp()Returns the current timestamp.java.lang.Stringtopic()Returns the topic name of the current input record; could be null if it is not available (for example, if this method is invoked from the punctuate call).voidtransitionToActive(StreamTask streamTask, RecordCollector recordCollector, ThreadCache newCache)Transition to active task and register a new task and cache to this processor contextvoidtransitionToStandby(ThreadCache newCache)Transition to standby task and register a dummy cache to this processor context-
Methods inherited from class org.apache.kafka.streams.processor.internals.AbstractProcessorContext
appConfigs, appConfigsWithPrefix, applicationId, applicationInternalStream, cache, currentSystemTimeMs, headers, initialize, keySerde, metrics, setCurrentNode, setSystemTimeMs, stateDir, taskId, taskType, uninitialize, valueSerde
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.kafka.streams.processor.internals.InternalProcessorContext
getStateStore
-
-
-
-
Constructor Detail
-
ProcessorContextImpl
public ProcessorContextImpl(TaskId id, StreamsConfig config, ProcessorStateManager stateMgr, StreamsMetricsImpl metrics, ThreadCache cache)
-
-
Method Detail
-
transitionToActive
public void transitionToActive(StreamTask streamTask, RecordCollector recordCollector, ThreadCache newCache)
Description copied from interface:InternalProcessorContextTransition to active task and register a new task and cache to this processor context- Specified by:
transitionToActivein interfaceInternalProcessorContext
-
transitionToStandby
public void transitionToStandby(ThreadCache newCache)
Description copied from interface:InternalProcessorContextTransition to standby task and register a dummy cache to this processor context- Specified by:
transitionToStandbyin interfaceInternalProcessorContext
-
registerCacheFlushListener
public void registerCacheFlushListener(java.lang.String namespace, ThreadCache.DirtyEntryFlushListener listener)Description copied from interface:InternalProcessorContextRegister a dirty entry flush listener for a particular namespace- Specified by:
registerCacheFlushListenerin interfaceInternalProcessorContext
-
stateManager
public ProcessorStateManager stateManager()
-
register
public void register(StateStore store, StateRestoreCallback stateRestoreCallback)
Description copied from interface:ProcessorContextRegisters and possibly restores the specified storage engine.- Specified by:
registerin interfaceProcessorContext- Overrides:
registerin classAbstractProcessorContext- Parameters:
store- the storage enginestateRestoreCallback- the restoration callback logic for log-backed state stores upon restart
-
recordCollector
public RecordCollector recordCollector()
Description copied from interface:RecordCollector.SupplierGet the record collector.- Specified by:
recordCollectorin interfaceRecordCollector.Supplier- Returns:
- the record collector
-
logChange
public void logChange(java.lang.String storeName, org.apache.kafka.common.utils.Bytes key, byte[] value, long timestamp)- Specified by:
logChangein interfaceInternalProcessorContext
-
getStateStore
public StateStore getStateStore(java.lang.String name)
Description copied from interface:ProcessorContextGet the state store given the store name.- Specified by:
getStateStorein interfaceProcessorContext- Parameters:
name- The store name- Returns:
- The state store instance
- Throws:
StreamsException- if an attempt is made to access this state store from an unknown nodejava.lang.UnsupportedOperationException- if the current streamTask type is standby
-
forward
public <K,V> void forward(K key, V value)Description copied from interface:ProcessorContextForwards a key/value pair to all downstream processors. Used the input record's timestamp as timestamp for the output record.- Specified by:
forwardin interfaceProcessorContext- Parameters:
key- keyvalue- value
-
forward
@Deprecated public <K,V> void forward(K key, V value, int childIndex)Deprecated.Description copied from interface:ProcessorContextForwards a key/value pair to one of the downstream processors designated by childIndex.- Specified by:
forwardin interfaceProcessorContext- Parameters:
key- keyvalue- valuechildIndex- index in list of children of this node
-
forward
@Deprecated public <K,V> void forward(K key, V value, java.lang.String childName)Deprecated.Description copied from interface:ProcessorContextForwards a key/value pair to one of the downstream processors designated by the downstream processor name.- Specified by:
forwardin interfaceProcessorContext- Parameters:
key- keyvalue- valuechildName- name of downstream processor
-
forward
public <K,V> void forward(K key, V value, To to)Description copied from interface:ProcessorContextForwards a key/value pair to the specified downstream processors. Can be used to set the timestamp of the output record.- Specified by:
forwardin interfaceProcessorContext- Parameters:
key- keyvalue- valueto- the options to use when forwarding
-
commit
public void commit()
Description copied from interface:ProcessorContextRequests a commit.- Specified by:
commitin interfaceProcessorContext
-
schedule
@Deprecated public Cancellable schedule(long intervalMs, PunctuationType type, Punctuator callback)
Deprecated.Description copied from interface:ProcessorContextSchedules a periodic operation for processors. A processor may call this method duringinitializationorprocessingto schedule a periodic callback — called a punctuation — toPunctuator.punctuate(long). The type parameter controls what notion of time is used for punctuation:PunctuationType.STREAM_TIME— uses "stream time", which is advanced by the processing of messages in accordance with the timestamp as extracted by theTimestampExtractorin use. The first punctuation will be triggered by the first record that is processed. NOTE: Only advanced if messages arrivePunctuationType.WALL_CLOCK_TIME— uses system time (the wall-clock time), which is advanced independent of whether new messages arrive. The first punctuation will be triggered after interval has elapsed. NOTE: This is best effort only as its granularity is limited by how long an iteration of the processing loop takes to complete
- with
PunctuationType.STREAM_TIME, when stream time advances more than interval - with
PunctuationType.WALL_CLOCK_TIME, on GC pause, too short interval, ...
- Specified by:
schedulein interfaceProcessorContext- Parameters:
intervalMs- the time interval between punctuations in millisecondstype- one of:PunctuationType.STREAM_TIME,PunctuationType.WALL_CLOCK_TIMEcallback- a function consuming timestamps representing the current stream or system time- Returns:
- a handle allowing cancellation of the punctuation schedule established by this method
-
schedule
public Cancellable schedule(java.time.Duration interval, PunctuationType type, Punctuator callback) throws java.lang.IllegalArgumentException
Description copied from interface:ProcessorContextSchedules a periodic operation for processors. A processor may call this method duringinitializationorprocessingto schedule a periodic callback — called a punctuation — toPunctuator.punctuate(long). The type parameter controls what notion of time is used for punctuation:PunctuationType.STREAM_TIME— uses "stream time", which is advanced by the processing of messages in accordance with the timestamp as extracted by theTimestampExtractorin use. The first punctuation will be triggered by the first record that is processed. NOTE: Only advanced if messages arrivePunctuationType.WALL_CLOCK_TIME— uses system time (the wall-clock time), which is advanced independent of whether new messages arrive. The first punctuation will be triggered after interval has elapsed. NOTE: This is best effort only as its granularity is limited by how long an iteration of the processing loop takes to complete
- with
PunctuationType.STREAM_TIME, when stream time advances more than interval - with
PunctuationType.WALL_CLOCK_TIME, on GC pause, too short interval, ...
- Specified by:
schedulein interfaceProcessorContext- Parameters:
interval- the time interval between punctuations (supported minimum is 1 millisecond)type- one of:PunctuationType.STREAM_TIME,PunctuationType.WALL_CLOCK_TIMEcallback- a function consuming timestamps representing the current stream or system time- Returns:
- a handle allowing cancellation of the punctuation schedule established by this method
- Throws:
java.lang.IllegalArgumentException
-
topic
public java.lang.String topic()
Description copied from interface:ProcessorContextReturns the topic name of the current input record; could be null if it is not available (for example, if this method is invoked from the punctuate call).- Specified by:
topicin interfaceProcessorContext- Overrides:
topicin classAbstractProcessorContext- Returns:
- the topic name
-
partition
public int partition()
Description copied from interface:ProcessorContextReturns the partition id of the current input record; could be -1 if it is not available (for example, if this method is invoked from the punctuate call).- Specified by:
partitionin interfaceProcessorContext- Overrides:
partitionin classAbstractProcessorContext- Returns:
- the partition id
-
offset
public long offset()
Description copied from interface:ProcessorContextReturns the offset of the current input record; could be -1 if it is not available (for example, if this method is invoked from the punctuate call).- Specified by:
offsetin interfaceProcessorContext- Overrides:
offsetin classAbstractProcessorContext- Returns:
- the offset
-
timestamp
public long timestamp()
Description copied from interface:ProcessorContextReturns the current timestamp.If it is triggered while processing a record streamed from the source processor, timestamp is defined as the timestamp of the current input record; the timestamp is extracted from
ConsumerRecordbyTimestampExtractor.If it is triggered while processing a record generated not from the source processor (for example, if this method is invoked from the punctuate call), timestamp is defined as the current task's stream time, which is defined as the largest timestamp of any record processed by the task.
- Specified by:
timestampin interfaceProcessorContext- Overrides:
timestampin classAbstractProcessorContext- Returns:
- the timestamp
-
currentNode
public ProcessorNode<?,?> currentNode()
Description copied from interface:InternalProcessorContextGet the currentProcessorNode- Specified by:
currentNodein interfaceInternalProcessorContext- Overrides:
currentNodein classAbstractProcessorContext
-
setRecordContext
public void setRecordContext(ProcessorRecordContext recordContext)
- Specified by:
setRecordContextin interfaceInternalProcessorContext- Overrides:
setRecordContextin classAbstractProcessorContext- Parameters:
recordContext- theProcessorRecordContextfor the record about to be processes
-
recordContext
public ProcessorRecordContext recordContext()
Description copied from interface:InternalProcessorContextReturns the currentRecordContext- Specified by:
recordContextin interfaceInternalProcessorContext- Overrides:
recordContextin classAbstractProcessorContext- Returns:
- the current
RecordContext
-
-