Skip to content

Commit 284c8a7

Browse files
committed
Add transactional examples to docs
1 parent 0f481e0 commit 284c8a7

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

README.rst

+23
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ that expose basic message attributes: topic, partition, offset, key, and value:
9494
for msg in consumer:
9595
print (msg.headers)
9696
97+
.. code-block:: python
98+
99+
# Read only committed messages from transactional topic
100+
consumer = KafkaConsumer(isolation_level='read_committed')
101+
consumer.subscribe(['txn_topic'])
102+
for msg in consumer:
103+
print(msg)
104+
97105
.. code-block:: python
98106
99107
# Get consumer metrics
@@ -153,6 +161,21 @@ for more details.
153161
for i in range(1000):
154162
producer.send('foobar', b'msg %d' % i)
155163
164+
.. code-block:: python
165+
166+
# Use transactions
167+
producer = KafkaProducer(transactional_id='fizzbuzz')
168+
producer.init_transactions()
169+
producer.begin_transaction()
170+
future = producer.send('txn_topic', value=b'yes')
171+
future.get() # wait for successful produce
172+
producer.commit_transaction() # commit the transaction
173+
174+
producer.begin_transaction()
175+
future = producer.send('txn_topic', value=b'no')
176+
future.get() # wait for successful produce
177+
producer.abort_transaction() # abort the transaction
178+
156179
.. code-block:: python
157180
158181
# Include record headers. The format is list of tuples with string key

docs/index.rst

+46
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@ that expose basic message attributes: topic, partition, offset, key, and value:
8080
for msg in consumer:
8181
assert isinstance(msg.value, dict)
8282
83+
.. code-block:: python
84+
85+
# Access record headers. The returned value is a list of tuples
86+
# with str, bytes for key and value
87+
for msg in consumer:
88+
print (msg.headers)
89+
90+
.. code-block:: python
91+
92+
# Read only committed messages from transactional topic
93+
consumer = KafkaConsumer(isolation_level='read_committed')
94+
consumer.subscribe(['txn_topic'])
95+
for msg in consumer:
96+
print(msg)
97+
98+
.. code-block:: python
99+
100+
# Get consumer metrics
101+
metrics = consumer.metrics()
102+
83103
84104
KafkaProducer
85105
*************
@@ -133,6 +153,32 @@ client. See `KafkaProducer <apidoc/KafkaProducer.html>`_ for more details.
133153
for i in range(1000):
134154
producer.send('foobar', b'msg %d' % i)
135155
156+
.. code-block:: python
157+
158+
# Use transactions
159+
producer = KafkaProducer(transactional_id='fizzbuzz')
160+
producer.init_transactions()
161+
producer.begin_transaction()
162+
future = producer.send('txn_topic', value=b'yes')
163+
future.get() # wait for successful produce
164+
producer.commit_transaction() # commit the transaction
165+
166+
producer.begin_transaction()
167+
future = producer.send('txn_topic', value=b'no')
168+
future.get() # wait for successful produce
169+
producer.abort_transaction() # abort the transaction
170+
171+
.. code-block:: python
172+
173+
# Include record headers. The format is list of tuples with string key
174+
# and bytes value.
175+
producer.send('foobar', value=b'c29tZSB2YWx1ZQ==', headers=[('content-encoding', b'base64')])
176+
177+
.. code-block:: python
178+
179+
# Get producer performance metrics
180+
metrics = producer.metrics()
181+
136182
137183
Thread safety
138184
*************

0 commit comments

Comments
 (0)