本文整理汇总了Python中kafka.KafkaConsumer.__next__方法的典型用法代码示例。如果您正苦于以下问题:Python KafkaConsumer.__next__方法的具体用法?Python KafkaConsumer.__next__怎么用?Python KafkaConsumer.__next__使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kafka.KafkaConsumer
的用法示例。
在下文中一共展示了KafkaConsumer.__next__方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: KafkaAdapter
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import __next__ [as 别名]
class KafkaAdapter(BaseAdapter):
"""
Adapter for communicating with Kafka brokers
"""
def __init__(self, direction, bootstrap_servers, topic, **kwargs):
super().__init__(direction)
self.topic = topic
self.bootstrap_servers = bootstrap_servers
self.extra_opts = kwargs
if 'sasl_plain_username' in self.extra_opts and 'sasl_plain_password' in self.extra_opts:
self.extra_opts['sasl_mechanism'] = 'PLAIN'
self.extra_opts['security_protocol'] = 'SASL_SSL'
self.url = 'kafka://{}/{}'.format(self.bootstrap_servers[0], self.topic)
self._connect()
def _connect(self):
try:
if self.direction == 'input':
self._consumer = KafkaConsumer(self.topic,
bootstrap_servers=self.bootstrap_servers,
**self.extra_opts)
else:
self._producer = KafkaProducer(bootstrap_servers=self.bootstrap_servers,
retries=6,
**self.extra_opts)
TuberLogger.info('Connected to {}'.format(self.url))
except KafkaError as e:
raise TuberIOError('Unable to connect to {}. Reason: {}'.format(self.url, str(e))) from e
except SSLError as e:
raise TuberException('Error creating adapter {}: {}'.format(self.url, str(e))) from e
def _send(self, message):
try:
record = self._producer.send(self.topic, message.serialize())
record_metadata = record.get(timeout=10)
except KafkaError as e:
raise TuberIOError('Unable to send message to {}. Reason: {}'.format(self.url, str(e))) from e
def receive(self):
try:
record = self._consumer.__next__()
return Message(record.value)
except KafkaError as e:
raise TuberIOError('Error receiving from {}. Reson: {}'.format(self.url, str(e))) from e