pykafka连接远程kafka报错,Broker {} not connected during offset manager discovery

错误

在通过topic获取consumer时报错,报错信息 Broker {} not connected during offset manager discovery

原因

由于远程broker和本地pykafka客户端的的hosts文件不同,导致本地无法解析域名从而访问失败。
pykafka/cluster.pyget_group_coordinator方法中,如果域名解析失败 broker.handleNone所以会报错 。

        for i in range(max_connection_retries):
            if i > 0:
                log.debug("Retrying offset manager discovery")
            time.sleep(i * 2)
            for broker in itervalues(self.brokers):

                req = GroupCoordinatorRequest(consumer_group)
                try:
                    future = broker.handler.request(req)
                except AttributeError:
                    log.error("Broker {} not connected during offset manager discovery"
                              .format(broker.id))
                    if i == max_connection_retries - 1:
                        raise
                    continue
                try:
                    res = future.get(GroupCoordinatorResponse)
                except GroupCoordinatorNotAvailable:
                    log.error('Error discovering offset manager - GroupCoordinatorNotAvailable.')
                    if i == max_connection_retries - 1:
                        raise
                except SocketDisconnectedError:
                    log.warning("Socket disconnected during offset manager discovery")
                    if i == max_connection_retries - 1:
                        raise
                    self.update()
                else:
                    coordinator = self.brokers.get(res.coordinator_id, None)
                    if coordinator is None:
                        raise Exception('Coordinator broker with id {id_} not found'.format(id_=res.coordinator_id))
                    log.info("Found coordinator broker with id %s", res.coordinator_id)
                    return coordinator

解决

在客户端的 hosts 文件中添加对应的host和ip即可

更多参考信息

https://blog.csdn.net/kakaweb/article/details/81510134

你可能感兴趣的:(坑)