DefaultKafkaManualAsyncCommitFactory.java


Overview

[DefaultKafkaManualAsyncCommitFactory.java](/projects/289/68571) is a key component in Apache Camel's Kafka consumer manual offset commit support module. This class implements the `KafkaManualCommitFactory` interface and serves as a factory for creating instances of asynchronous manual commit objects (`DefaultKafkaManualAsyncCommit`). Its primary purpose is to provide a mechanism for creating manual commit objects that allow Kafka offset commits to be performed asynchronously during message processing within Camel routes.

This asynchronous commit strategy enables non-blocking offset commits, improving throughput and consumer responsiveness by decoupling offset committing from message processing threads. This is particularly useful in high-volume or latency-sensitive Kafka consumer applications integrated with Apache Camel.


Detailed Class and Method Documentation

Class: DefaultKafkaManualAsyncCommitFactory

Package

org.apache.camel.component.kafka.consumer

Description

A factory class responsible for creating new instances of `KafkaManualCommit` that perform asynchronous offset commits. This factory produces instances of `DefaultKafkaManualAsyncCommit`, which encapsulate the logic for asynchronously committing Kafka offsets within Camel Kafka consumer routes.

Implements

KafkaManualCommitFactory

This interface defines a contract for factories that create `KafkaManualCommit` instances tied to a specific Camel `Exchange` and Kafka record.


Method: newInstance

@Override
public KafkaManualCommit newInstance(
    CamelExchangePayload camelExchangePayload,
    KafkaRecordPayload kafkaRecordPayload,
    CommitManager commitManager)

Description

Creates and returns a new `KafkaManualCommit` instance that supports asynchronous commit semantics.

Parameters

Returns

Usage Example

KafkaManualCommitFactory factory = new DefaultKafkaManualAsyncCommitFactory();

KafkaManualCommitFactory.CamelExchangePayload camelPayload = 
    new KafkaManualCommitFactory.CamelExchangePayload(exchange, consumer, threadId, offsetRepository);

KafkaManualCommitFactory.KafkaRecordPayload kafkaPayload = 
    new KafkaManualCommitFactory.KafkaRecordPayload(topicPartition, offset, timeout);

KafkaManualCommit manualCommit = factory.newInstance(camelPayload, kafkaPayload, commitManager);

exchange.getMessage().setHeader(KafkaConstants.MANUAL_COMMIT, manualCommit);

Important Implementation Details and Algorithms


Interaction with Other System Components


Summary

Aspect

Description

**Purpose**

Factory for asynchronous manual Kafka offset commit instances.

**Functionality**

Creates `KafkaManualCommit` objects supporting async offset commit.

**Key Method**

`newInstance(CamelExchangePayload, KafkaRecordPayload, CommitManager)`

**Dependencies**

`DefaultKafkaManualAsyncCommit`, `CommitManager`, Camel Exchange and Kafka contexts.

**Usage Context**

Used within Kafka consumer processing to enable non-blocking manual offset commits in Camel routes.


Mermaid Class Diagram

classDiagram
    class DefaultKafkaManualAsyncCommitFactory {
        <<implements>> KafkaManualCommitFactory
        +newInstance(camelExchangePayload: CamelExchangePayload, kafkaRecordPayload: KafkaRecordPayload, commitManager: CommitManager) KafkaManualCommit
    }

    class KafkaManualCommitFactory {
        <<interface>>
        +newInstance(camelExchangePayload: CamelExchangePayload, kafkaRecordPayload: KafkaRecordPayload, commitManager: CommitManager) KafkaManualCommit
    }

    DefaultKafkaManualAsyncCommitFactory ..|> KafkaManualCommitFactory
    DefaultKafkaManualAsyncCommitFactory --> DefaultKafkaManualAsyncCommit : creates

    class DefaultKafkaManualAsyncCommit {
        +commit()
        -commitManager: CommitManager
    }

    DefaultKafkaManualAsyncCommitFactory --> DefaultKafkaManualAsyncCommit

Additional Notes


References


This documentation provides a comprehensive understanding of the [DefaultKafkaManualAsyncCommitFactory.java](/projects/289/68571) file, its role in asynchronous Kafka manual commit processing, and how it integrates within the Apache Camel Kafka consumer framework.