KafkaCommit

Short Description
Ports
KafkaCommit Attributes
Details
See also

Short Description

KafkaCommit commits processed offsets for Kafka topics.

It must be used in combination with a KafkaReader component to commit offsets explicitly, after all the consumed events processing is complete.

Component Data source Input ports Output ports Each to all outputs Different to different outputs Transformation Transf. req. Java CTL Auto-propagated metadata
KafkaCommit 10

Ports

Port typeNumberRequiredDescriptionMetadata
Input0 Offsets to be committedKafkaCommitInput

Metadata

Table 55.8. KafkaCommitInput

Field numberField nameData typeDescription
1topicstring Event topic
2partitionstring Event partition
3offsetlongEvent offset

The metadata are used in the component's input mapping. The metadata fields are required to identify the event offset to be committed.

KafkaCommit Attributes

AttributeReqDescriptionPossible values
Basic
Kafka reader component 

A reference to a reader component which consumes the events to be committed. With only a single KafkaReader in the graph, it is auto-detected. With multiple KafkaReader components, this attribute is required.

e.g. KafkaReader (id:KAFKA_READER)
Commit interval  The interval, in which incoming offsets are committed. e.g. 500ms | 3s | 1m
Input mapping  Defines the mapping of input metadata fields to KafkaCommit fields.  

Details

In Kafka, reading normally starts from the last committed offset. Committing an offset means that the event with this offset is marked as already consumed/processed.

The default behavior of KafkaReader is to auto-commit consumed events periodically.

To have a better control over when the offsets are actually committed, you may use the KafkaCommit component.

KafkaCommit has to be used in pair with a reader component, as it is the reader that consumes the events to be committed. To identify the reader, it has to be specified in the Kafka reader component property. In case there is only one reader component in the graph, it is auto-detected.

If the input port is not connected, consumed offsets in the paired reader can be committed in a one-time fashion. In this case, the KafkaCommit component should be in a later graph phase than the reader itself.

When the input port is connected, the offsets (uniquely identified by topic, partition and offset) sent over the input edge are committed periodically.

Notes and Limitations

It is not possible to pair KafkaCommit with a reader component from another graph (job).

Similarily to KafkaReader, it is not possible to achieve atomic committing of each incoming offset, as committing is performed periodically. It can be beneficial to lower the commit interval, but keeping it too low is not recommended as it vastly increases read/write load on the Kafka cluster.