Overview

confluent-kafka 2.2, released on July 10, 2023, improves the transactional API for exactly-once operations.

Main Features

Transactional API

The transactional API allows producing and consuming messages in an atomic transaction, guaranteeing exactly-once semantics.

python
from confluent_kafka import Producer

conf = {
    'bootstrap.servers': 'localhost:9092',
    'transactional.id': 'my-tx-id',
}

producer = Producer(conf)
producer.init_transactions()
producer.begin_transaction()
try:
    producer.produce('topic-a', value='message-1')
    producer.produce('topic-b', value='message-2')
    producer.commit_transaction()
except Exception:
    producer.abort_transaction()

Reliability improvements

The client benefits from reliability fixes for automatic reconnection and transient error handling.

python
from confluent_kafka import Consumer

consumer = Consumer({
    'bootstrap.servers': 'localhost:9092',
    'group.id': 'my-group',
    'enable.auto.commit': False,
    'isolation.level': 'read_committed',
})
consumer.subscribe(['topic-a'])

msg = consumer.poll(timeout=5.0)
if msg and not msg.error():
    print(f'Received: {msg.value().decode()}')
    consumer.commit(msg)
consumer.close()

Sources