示例#1
0
 def get_controller_id_for_topic(self, topic_name):
     """
     Returns current controller for topic
     """
     request = MetadataRequest_v1(topics=[topic_name])
     response = self.send_request_and_get_response(request)
     return response.controller_id
def test_client(request, sasl_kafka):
    topic_name = special_to_underscore(request.node.name + random_string(4))
    sasl_kafka.create_topics([topic_name], num_partitions=1)

    client, = sasl_kafka.get_clients(1)
    request = MetadataRequest_v1(None)
    client.send(0, request)
    for _ in range(10):
        result = client.poll(timeout_ms=10000)
        if len(result) > 0:
            break
    else:
        raise RuntimeError("Couldn't fetch topic response from Broker.")
    result = result[0]
    assert topic_name in [t[1] for t in result.topics]
示例#3
0
 async def _get_controller_node(self,
                                owner: Service,
                                client: aiokafka.AIOKafkaClient,
                                timeout: int = 30000) -> Optional[int]:
     nodes = [broker.nodeId for broker in client.cluster.brokers()]
     for node_id in nodes:
         if node_id is None:
             raise NotReady('Not connected to Kafka Broker')
         request = MetadataRequest_v1([])
         wait_result = await owner.wait(
             client.send(node_id, request),
             timeout=timeout,
         )
         if wait_result.stopped:
             owner.log.info(f'Shutting down - skipping creation.')
             return None
         response = wait_result.result
         return response.controller_id
     raise Exception(f'Controller node not found')