当前位置: 首页>>代码示例>>Python>>正文


Python KafkaConsumer.__next__方法代码示例

本文整理汇总了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
开发者ID:metno,项目名称:Tuber,代码行数:53,代码来源:KafkaAdapter.py


注:本文中的kafka.KafkaConsumer.__next__方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。