Python confluent_kafka.Consumer() Examples
The following are 30
code examples of confluent_kafka.Consumer().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
confluent_kafka
, or try the search function
.
Example #1
Source File: wc.py From xi-iot with MIT License | 7 votes |
def readMsg(): logging.debug("readMsg from kafkaTopic: %s", kafkaTopic) msg = kConsumer.poll(5.0) if msg is None: logging.debug('Received message: None') return None; if msg.error(): logging.warning("Consumer error: {}".format(msg.error())) return None logging.debug('Received message: {}'.format(msg.value().decode('utf-8'))) msgJson= json.loads(msg.value()) comment = msgJson['payload']['after']['comment_content'] logging.info("got comment from kafkaTopic: %s", comment) return comment
Example #2
Source File: test_misc.py From confluent-kafka-python with Apache License 2.0 | 7 votes |
def test_error_cb(): """ Tests error_cb. """ def error_cb(error_msg): global seen_error_cb seen_error_cb = True acceptable_error_codes = (confluent_kafka.KafkaError._TRANSPORT, confluent_kafka.KafkaError._ALL_BROKERS_DOWN) assert error_msg.code() in acceptable_error_codes conf = {'bootstrap.servers': 'localhost:65531', # Purposely cause connection refused error 'group.id': 'test', 'socket.timeout.ms': '100', 'session.timeout.ms': 1000, # Avoid close() blocking too long 'error_cb': error_cb } kc = confluent_kafka.Consumer(**conf) kc.subscribe(["test"]) while not seen_error_cb: kc.poll(timeout=1) kc.close() # global variable for stats_cb call back function
Example #3
Source File: test_transactions.py From confluent-kafka-python with Apache License 2.0 | 6 votes |
def consume_committed(conf, topic): print("=== Consuming transactional messages from topic {}. ===".format(topic)) consumer_conf = {'group.id': str(uuid1()), 'auto.offset.reset': 'earliest', 'enable.auto.commit': False, 'enable.partition.eof': True, 'error_cb': prefixed_error_cb(called_by()), } consumer_conf.update(conf) consumer = Consumer(consumer_conf) consumer.subscribe([topic]) msg_cnt = read_all_msgs(consumer) consumer.close() return msg_cnt
Example #4
Source File: KcConsumer.py From refarch-kc with Apache License 2.0 | 6 votes |
def prepareConsumer(self, groupID = "pythonconsumers"): options ={ 'bootstrap.servers': self.kafka_brokers, 'group.id': groupID, 'auto.offset.reset': 'earliest', 'enable.auto.commit': self.kafka_auto_commit, } if (self.kafka_env != 'LOCAL'): options['security.protocol'] = 'SASL_SSL' options['sasl.mechanisms'] = 'PLAIN' options['sasl.username'] = 'token' options['sasl.password'] = self.kafka_apikey if (self.kafka_env == 'OCP'): options['ssl.ca.location'] = os.environ['PEM_CERT'] print("[KafkaConsumer] - This is the configuration for the consumer:") print('[KafkaConsumer] - {}'.format(options)) self.consumer = Consumer(options) self.consumer.subscribe([self.topic_name]) # Prints out and returns the decoded events received by the consumer
Example #5
Source File: KcConsumer.py From refarch-kc with Apache License 2.0 | 6 votes |
def pollNextEvent(self, keyID, keyname): gotIt = False anEvent = {} while not gotIt: msg = self.consumer.poll(timeout=10.0) # Continue if we have not received a message yet if msg is None: continue if msg.error(): print("[KafkaConsumer] - Consumer error: {}".format(msg.error())) # Stop reading if we find end of partition in the error message if ("PARTITION_EOF" in msg.error()): gotIt= True continue msgStr = self.traceResponse(msg) # Create the json event based on message string formed by traceResponse anEvent = json.loads(msgStr) # If we've found our event based on keyname and keyID, stop reading messages if (anEvent["payload"][keyname] == keyID): gotIt = True return anEvent # Polls for events until it finds an event with same key
Example #6
Source File: consumer.py From openwhisk-package-kafka with Apache License 2.0 | 6 votes |
def __createConsumer(self): if self.__shouldRun(): config = {'metadata.broker.list': ','.join(self.brokers), 'group.id': self.trigger, 'default.topic.config': {'auto.offset.reset': 'latest'}, 'enable.auto.commit': False, 'api.version.request': True, 'isolation.level': 'read_uncommitted' } if self.isMessageHub: # append Message Hub specific config config.update({'ssl.ca.location': '/etc/ssl/certs/', 'sasl.mechanisms': 'PLAIN', 'sasl.username': self.username, 'sasl.password': self.password, 'security.protocol': 'sasl_ssl' }) consumer = KafkaConsumer(config) consumer.subscribe([self.topic], self.__on_assign, self.__on_revoke) logging.info("[{}] Now listening in order to fire trigger".format(self.trigger)) return consumer
Example #7
Source File: test_misc.py From confluent-kafka-python with Apache License 2.0 | 6 votes |
def test_stats_cb(): """ Tests stats_cb. """ def stats_cb(stats_json_str): global seen_stats_cb seen_stats_cb = True stats_json = json.loads(stats_json_str) assert len(stats_json['name']) > 0 conf = {'group.id': 'test', 'socket.timeout.ms': '100', 'session.timeout.ms': 1000, # Avoid close() blocking too long 'statistics.interval.ms': 200, 'stats_cb': stats_cb } kc = confluent_kafka.Consumer(**conf) kc.subscribe(["test"]) while not seen_stats_cb: kc.poll(timeout=1) kc.close()
Example #8
Source File: test_log.py From confluent-kafka-python with Apache License 2.0 | 6 votes |
def test_logging_consumer(): """ Tests that logging works """ logger = logging.getLogger('consumer') logger.setLevel(logging.DEBUG) f = CountingFilter('consumer') logger.addFilter(f) kc = confluent_kafka.Consumer({'group.id': 'test', 'debug': 'all'}, logger=logger) while f.cnt == 0: kc.poll(timeout=0.5) print('%s: %d log messages seen' % (f.name, f.cnt)) kc.close()
Example #9
Source File: soakclient.py From confluent-kafka-python with Apache License 2.0 | 5 votes |
def consumer_thread_main(self): """ Consumer thread main function """ try: self.consumer_run() except KeyboardInterrupt: self.logger.info("consumer: aborted by user") self.run = False except Exception as ex: self.logger.fatal("consumer: fatal exception: {}".format(ex)) self.run = False
Example #10
Source File: confluent.py From kafka-influxdb with Apache License 2.0 | 5 votes |
def _connect(self): """ Connect to Kafka and subscribe to the topic """ connection = self._setup_connection() logging.info( "Connecting to Kafka with the following settings:\n %s...", connection) self.consumer = Consumer(**connection) self._subscribe()
Example #11
Source File: soakclient.py From confluent-kafka-python with Apache License 2.0 | 5 votes |
def __init__(self, topic, rate, conf): """ SoakClient constructor. conf is the client configuration """ self.topic = topic self.rate = rate self.disprate = int(rate * 10) self.run = True self.stats_cnt = {'producer': 0, 'consumer': 0} self.start_time = time.time() self.logger = logging.getLogger('soakclient') self.logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() handler.setFormatter(logging.Formatter('%(asctime)-15s %(levelname)-8s %(message)s')) self.logger.addHandler(handler) # Create topic (might already exist) self.create_topic(self.topic, conf) # # Create Producer and Consumer, each running in its own thread. # conf['stats_cb'] = self.stats_cb conf['statistics.interval.ms'] = 10000 # Producer conf['error_cb'] = self.producer_error_cb self.producer = Producer(conf) # Consumer conf['error_cb'] = self.consumer_error_cb conf['on_commit'] = self.consumer_commit_cb self.logger.info("consumer: using group.id {}".format(conf['group.id'])) self.consumer = Consumer(conf) self.producer_thread = threading.Thread(target=self.producer_thread_main) self.producer_thread.start() self.consumer_thread = threading.Thread(target=self.consumer_thread_main) self.consumer_thread.start()
Example #12
Source File: soakclient.py From confluent-kafka-python with Apache License 2.0 | 5 votes |
def terminate(self): """ Terminate Producer and Consumer """ soak.logger.info("Terminating (ran for {}s)".format(time.time() - self.start_time)) self.run = False self.producer_thread.join() self.consumer_thread.join()
Example #13
Source File: KcConsumer.py From refarch-kc with Apache License 2.0 | 5 votes |
def pollEvents(self): gotIt = False while not gotIt: msg = self.consumer.poll(timeout=10.0) if msg is None: continue if msg.error(): print("[ERROR] - [KafkaConsumer] - Consumer error: {}".format(msg.error())) if ("PARTITION_EOF" in msg.error()): gotIt= True continue self.traceResponse(msg)
Example #14
Source File: KcConsumer.py From refarch-kc with Apache License 2.0 | 5 votes |
def pollNextEventByKey(self, keyID): if (str(keyID) == ""): print("[KafkaConsumer] - Consumer error: Key is an empty string") return None gotIt = False anEvent = {} while not gotIt: msg = self.consumer.poll(timeout=10.0) # Continue if we have not received a message yet if msg is None: continue if msg.error(): print("[KafkaConsumer] - Consumer error: {}".format(msg.error())) # Stop reading if we find end of partition in the error message if ("PARTITION_EOF" in msg.error()): gotIt= True continue msgStr = self.traceResponse(msg) # Create the json event based on message string formed by traceResponse anEvent = json.loads(msgStr) # If we've found our event based on keyname and keyID, stop reading messages if (str(msg.key().decode('utf-8')) == keyID): gotIt = True return anEvent # Polls for events endlessly
Example #15
Source File: verifiable_consumer.py From confluent-kafka-python with Apache License 2.0 | 5 votes |
def __init__(self, conf): """ conf is a config dict passed to confluent_kafka.Consumer() """ super(VerifiableConsumer, self).__init__(conf) self.conf['on_commit'] = self.on_commit self.consumer = Consumer(**conf) self.consumed_msgs = 0 self.consumed_msgs_last_reported = 0 self.consumed_msgs_at_last_commit = 0 self.use_auto_commit = False self.use_async_commit = False self.max_msgs = -1 self.assignment = [] self.assignment_dict = dict()
Example #16
Source File: __init__.py From confluent-kafka-python with Apache License 2.0 | 5 votes |
def poll(self, timeout=None): """ This is an overriden method from confluent_kafka.Consumer class. This handles message deserialization using avro schema :param float timeout: Poll timeout in seconds (default: indefinite) :returns: message object with deserialized key and value as dict objects :rtype: Message """ if timeout is None: timeout = -1 message = super(AvroConsumer, self).poll(timeout) if message is None: return None if not message.error(): try: if message.value() is not None: decoded_value = self._serializer.decode_message(message.value(), is_key=False) message.set_value(decoded_value) if message.key() is not None: decoded_key = self._serializer.decode_message(message.key(), is_key=True) message.set_key(decoded_key) except SerializerError as e: raise SerializerError("Message deserialization failed for message at {} [{}] offset {}: {}".format( message.topic(), message.partition(), message.offset(), e)) return message
Example #17
Source File: kafka_client.py From incubator-spot with Apache License 2.0 | 5 votes |
def start(self): consumer = Consumer(**self._kafka_conf) consumer.subscribe([self._topic]) return consumer
Example #18
Source File: mordor-kafka-consumer.py From mordor with GNU General Public License v3.0 | 5 votes |
def commit_completed(err, partitions): if err: sys.stderr.write(str(err)) else: sys.stderr.write("""Committed partition offsets: {} """.format(str(partitions))) # Consumer configuration # See https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md
Example #19
Source File: event_engine.py From xos with Apache License 2.0 | 5 votes |
def create_kafka_consumer(self): # use the service name as the group id consumer_config = { "group.id": Config().get("name"), "bootstrap.servers": ",".join(self.bootstrap_servers), "default.topic.config": {"auto.offset.reset": "smallest"}, } return confluent_kafka.Consumer(**consumer_config)
Example #20
Source File: KafkaConsumer.py From ChaosTestingCode with MIT License | 5 votes |
def create_consumer(self, group_id, topic): self.terminate = False console_out(f"Creating a consumer with bootstrap.servers: {self.broker_manager.get_bootstrap_servers()}", self.actor) self.consumer = Consumer({ 'bootstrap.servers': self.broker_manager.get_bootstrap_servers(), 'api.version.request': True, 'enable.auto.commit': True, 'metadata.max.age.ms': 60000, 'group.id': group_id, 'auto.offset.reset': 'earliest', 'default.topic.config': { 'auto.offset.reset': 'smallest' } }) self.topic = topic
Example #21
Source File: KcConsumer.py From refarch-kc with Apache License 2.0 | 5 votes |
def __init__(self, kafka_env = 'LOCAL', kafka_brokers = "", kafka_apikey = "", topic_name = "",autocommit = True): self.kafka_env = kafka_env self.kafka_brokers = kafka_brokers self.kafka_apikey = kafka_apikey self.topic_name = topic_name self.kafka_auto_commit = autocommit # See https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md # Prepares de Consumer with specific options based on the case
Example #22
Source File: kafka.py From tributary with Apache License 2.0 | 5 votes |
def __init__(self, servers, group, topics, json=False, wrap=False, interval=1): c = Consumer({ 'bootstrap.servers': servers, 'group.id': group, 'default.topic.config': { 'auto.offset.reset': 'smallest' } }) if not isinstance(topics, list): topics = [topics] c.subscribe(topics) async def _listen(consumer=c, json=json, wrap=wrap, interval=interval): while True: msg = consumer.poll(interval) if msg is None: continue if msg.error(): if msg.error().code() == KafkaError._PARTITION_EOF: continue else: print(msg.error()) break msg = msg.value().decode('utf-8') if not msg: break if json: msg = JSON.loads(msg) if wrap: msg = [msg] yield msg super().__init__(foo=_listen) self._name = 'Kafka'
Example #23
Source File: event_engine.py From xos with Apache License 2.0 | 5 votes |
def create_kafka_consumer(self): # use the service name as the group id consumer_config = { "group.id": Config().get("name"), "bootstrap.servers": ",".join(self.bootstrap_servers), "default.topic.config": {"auto.offset.reset": "smallest"}, } return confluent_kafka.Consumer(**consumer_config)
Example #24
Source File: consumer.py From Gather-Deployment with MIT License | 5 votes |
def initialize(self, stormconf, context): self.consumer = Consumer( { 'bootstrap.servers': 'kafka:9092', 'group.id': 'mygroup', 'auto.offset.reset': 'latest', } ) self.consumer.subscribe(['twitter'])
Example #25
Source File: kafka_streaming_client.py From agogosml with MIT License | 5 votes |
def __init__(self, config): # pragma: no cover """ Streaming client implementation based on Kafka. Configuration keys: KAFKA_ADDRESS KAFKA_CONSUMER_GROUP KAFKA_TOPIC TIMEOUT EVENT_HUB_KAFKA_CONNECTION_STRING """ self.logger = Logger() self.topic = config.get("KAFKA_TOPIC") if not self.topic: raise ValueError("KAFKA_TOPIC is not set in the config object.") if not config.get("KAFKA_ADDRESS"): raise ValueError("KAFKA_ADDRESS is not set in the config object.") if config.get("TIMEOUT"): try: self.timeout = int(config.get("TIMEOUT")) except ValueError: self.timeout = None else: self.timeout = None kafka_config = self.create_kafka_config(config) self.admin = admin.AdminClient(kafka_config) if config.get("KAFKA_CONSUMER_GROUP") is None: self.logger.info('Creating Producer') self.producer = Producer(kafka_config) self.run = False else: self.logger.info('Creating Consumer') self.consumer = Consumer(kafka_config) self.run = True signal.signal(signal.SIGTERM, self.exit_gracefully)
Example #26
Source File: kafka_client_supplier.py From winton-kafka-streams with Apache License 2.0 | 5 votes |
def consumer(self): log.debug('Starting consumer...') # TODO: Must set all config values applicable to a consumer consumer_args = {'bootstrap.servers': self.config.BOOTSTRAP_SERVERS, 'group.id': self.config.APPLICATION_ID, 'default.topic.config': {'auto.offset.reset': self.config.AUTO_OFFSET_RESET}, 'enable.auto.commit': self.config.ENABLE_AUTO_COMMIT} log.debug('Consumer Arguments: %s', pprint.PrettyPrinter().pformat(consumer_args)) return kafka.Consumer(consumer_args)
Example #27
Source File: kafka_msg_handler.py From koku with GNU Affero General Public License v3.0 | 5 votes |
def listen_for_messages_loop(): """Wrap listen_for_messages in while true.""" consumer = get_consumer() LOG.info("Consumer is listening for messages...") for _ in itertools.count(): # equivalent to while True, but mockable msg = consumer.poll(timeout=1.0) if msg is None: continue if msg.error(): KAFKA_CONNECTION_ERRORS_COUNTER.inc() LOG.error(f"[listen_for_messages_loop] consumer.poll message: {msg}. Error: {msg.error()}") continue listen_for_messages(msg, consumer)
Example #28
Source File: kafka_msg_handler.py From koku with GNU Affero General Public License v3.0 | 5 votes |
def get_consumer(): # pragma: no cover """Create a Kafka consumer.""" consumer = Consumer( { "bootstrap.servers": Config.INSIGHTS_KAFKA_ADDRESS, "group.id": "hccm-group", "queued.max.messages.kbytes": 1024, "enable.auto.commit": False, "enable.auto.offset.store": False, "max.poll.interval.ms": 1080000, # 18 minutes } ) consumer.subscribe([HCCM_TOPIC]) return consumer
Example #29
Source File: kafka_listener.py From koku with GNU Affero General Public License v3.0 | 5 votes |
def listen_for_messages(msg, consumer, application_source_id): # noqa: C901 """ Listen for Platform-Sources kafka messages. Args: consumer (Consumer): Kafka consumer object application_source_id (Integer): Cost Management's current Application Source ID. Used for kafka message filtering. Returns: None """ try: try: msg = get_sources_msg_data(msg, application_source_id) offset = msg.get("offset") partition = msg.get("partition") except SourcesMessageError: return if msg: LOG.info(f"Processing message offset: {offset} partition: {partition}") topic_partition = TopicPartition(topic=Config.SOURCES_TOPIC, partition=partition, offset=offset) LOG.info(f"Cost Management Message to process: {str(msg)}") try: with transaction.atomic(): process_message(application_source_id, msg) consumer.commit() except (IntegrityError, InterfaceError, OperationalError) as err: connection.close() LOG.error(f"{type(err).__name__}: {err}") rewind_consumer_to_retry(consumer, topic_partition) except SourcesHTTPClientError as err: LOG.error(err) rewind_consumer_to_retry(consumer, topic_partition) except SourceNotFoundError: LOG.warning(f"Source not found in platform sources. Skipping msg: {msg}") consumer.commit() except KafkaError as error: LOG.error(f"[listen_for_messages] Kafka error encountered: {type(error).__name__}: {error}", exc_info=True) except Exception as error: LOG.error(f"[listen_for_messages] UNKNOWN error encountered: {type(error).__name__}: {error}", exc_info=True)
Example #30
Source File: kafka_listener.py From koku with GNU Affero General Public License v3.0 | 5 votes |
def get_consumer(): """Create a Kafka consumer.""" consumer = Consumer( { "bootstrap.servers": Config.SOURCES_KAFKA_ADDRESS, "group.id": "hccm-sources", "queued.max.messages.kbytes": 1024, "enable.auto.commit": False, } ) consumer.subscribe([Config.SOURCES_TOPIC]) return consumer