Closed
Description
I was trying to use Simple Consumer to do auto commit, but ran into number of issues.
- By default auto_commit is set to be false which is counter intuitive as the default value of auto commit is true in server config.
- If consumer is created using
SimpleConsumer(kafka, "my-group", TOPIC_NAME, True)
then the auto commit does not work.
- If consumer is created using
SimpleConsumer(kafka, "my-group", TOPIC_NAME, True, auto_commit_every_n=100)
then the code fails with unable to find reference for ReentrantTimer
- If the code is changed to use
SimpleConsumer(kafka, "my-group", TOPIC_NAME, True, 100, 5000)
the code fails with unable to find reference to send_offset_commit_request which is defined incorrectly.
self.send_offset_commit_request(self.group, reqs)
- I have enclosed the diff below that I had to do to ensure that
SimpleConsumer(kafka, "my-group", TOPIC_NAME, True, auto_commit_every_n=100)
can proceed further.
But now I am stuck at
kafka-python/kafka/util.py", line 45, in relative_unpack
raise BufferUnderflowError("Not enough data left")
BufferUnderflowError: Not enough data left
Code diff to workaround issues mentioned above
diff --git a/kafka/consumer.py b/kafka/consumer.py
index f123113..7d658b1 100644
--- a/kafka/consumer.py
+++ b/kafka/consumer.py
@@ -1,6 +1,7 @@
from itertools import izip_longest, repeat
import logging
from threading import Lock
+from util import ReentrantTimer
from kafka.common import (
ErrorMapping, FetchRequest,
@@ -126,7 +127,7 @@ class SimpleConsumer(object):
log.debug("Commit offset %d in SimpleConsumer: group=%s, topic=%s, partition=%s" % (
offset, self.group, self.topic, partition))
reqs.append(OffsetCommitRequest(self.topic, partition, offset, None))
- resps = self.send_offset_commit_request(self.group, reqs)
+ resps = self.client.send_offset_commit_request(self.group, reqs)
for resp in resps:
assert resp.error == 0
self.count_since_commit = 0
Metadata
Metadata
Assignees
Labels
No labels