Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Current stateWIP

Discussion thread: here

JIRA: here

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

...

To help understand the design, we need to introduce some terminology. Terms designated with 1 apply to the current KafkaConsumer implementation and terms with 2 apply to the new implementation; a term may apply to both.

TermDefinition

Application event

...

A data structure specific to each Consumer API call that encapsulates application-provided data. For example, the application event specific to the seek event would include the user-provided topic information and offset. These events are enqueued onto the application event queue by the Consumer.

Application events can optionally include a Future on which the application thread can issue a timed block, awaiting completion by the background thread

Application event processor

Logic which processes application events on the background thread, interacting with the request managers.

Application event queue

A shared queue which stores application events enqueued by the application thread. These events are later dequeued by the background thread and given to the application event processor for execution.

Application thread

...

The thread that is executing the user's code that interacts with the Consumer API. Per the current implementation in KafkaConsumer, only one thread may call APIs at a time.

Background

...

event
Background event queue

A shared queue which stores background events enqueued by the background thread. The events are later dequeued by the application thread inside the Consumer and handled appropriately.

Background thread

An internal thread

...

created for each Consumer

...

instance on which the following operations are performed:

  • Execution of application events
  • Group membership
  • Managing network I/O requests and responses
  • Forwarding results to application events
  • Submitting background events for processing by the application thread 
Event handler
Logic that pulls events from the event queue for processing on the background thread.

...

HeartbeatLogic related to communicating liveness, group membership, etc. as introduced

...

in KIP-62.
Network client delegate

...


Request manager

...

An internal interface that is used by the background thread to handle the management of requested, inflight, and responded network I/O.

Threading Model

<TBD>

Background thread

...