[ https://issues.apache.org/jira/browse/KAFKA-4713?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias J. Sax resolved KAFKA-4713. ------------------------------------ Resolution: Won't Fix In AK 2.7, we introduces the new `api.Processor` with new `api.ProcessorContext` which partially address this issue. The old `Processor` is removed with 4.0.0 release. Thus, closing this ticket. > Processors cannot call public methods on ProcessorContext from the init method > ------------------------------------------------------------------------------ > > Key: KAFKA-4713 > URL: https://issues.apache.org/jira/browse/KAFKA-4713 > Project: Kafka > Issue Type: Improvement > Components: streams > Affects Versions: 0.10.0.1 > Reporter: Bruno Felaco > Priority: Major > > Streams passes the ProcessorContext to the init method of a Processor on > startup when a topic/partition is assigned. This is the only means that a > Processor has to obtain a reference to the ProcessorContext, which is > required if the implementation needs to be aware of the particular > topic/partition that is being processed. However, from within the init() > method, the only thing the implementation is allowed to do with the > ProcessorContext is schedule periodic tasks and create/access any state > stores. It is not allowed to get the topic, partition, or current offset. > This severely limits what an implementation can do in init. An implementation > may need to check with or notify another component or system that it has been > assigned a particular topic/partition. As far as I can see, there is no other > mechanism in Streams to allow an implementation to react to the assignment of > topic/partition and perform any such initialization, since Streams explicitly > controls the ConsumerRebalanceListener. The implementation would have to wait > for the receipt of the first record to get this information which is too late > for certain use cases. > I propose that the following methods should be usable from the init method: > topic() > partition() > and also, but not as critical: > offset() > timestamp() > Alternatively, streams could allow an implementation to register a separate > listener that would be invoked from the global ConsumerRebalanceListener > when a topic/partition is assigned. -- This message was sent by Atlassian Jira (v8.20.10#820010)