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()
