Class Cluster

java.lang.Object
org.apache.kafka.common.Cluster

public final class Cluster extends Object
An immutable representation of a subset of the nodes, topics, and partitions in the Kafka cluster.
  • Constructor Details

    • Cluster

      public Cluster(String clusterId, Collection<Node> nodes, Collection<PartitionInfo> partitions, Set<String> unauthorizedTopics, Set<String> internalTopics)
      Create a new cluster with the given id, nodes and partitions
      Parameters:
      nodes - The nodes in the cluster
      partitions - Information about a subset of the topic-partitions this cluster hosts
    • Cluster

      public Cluster(String clusterId, Collection<Node> nodes, Collection<PartitionInfo> partitions, Set<String> unauthorizedTopics, Set<String> internalTopics, Node controller)
      Create a new cluster with the given id, nodes and partitions
      Parameters:
      nodes - The nodes in the cluster
      partitions - Information about a subset of the topic-partitions this cluster hosts
    • Cluster

      public Cluster(String clusterId, Collection<Node> nodes, Collection<PartitionInfo> partitions, Set<String> unauthorizedTopics, Set<String> invalidTopics, Set<String> internalTopics, Node controller)
      Create a new cluster with the given id, nodes and partitions
      Parameters:
      nodes - The nodes in the cluster
      partitions - Information about a subset of the topic-partitions this cluster hosts
    • Cluster

      public Cluster(String clusterId, Collection<Node> nodes, Collection<PartitionInfo> partitions, Set<String> unauthorizedTopics, Set<String> invalidTopics, Set<String> internalTopics, Node controller, Map<String,Uuid> topicIds)
      Create a new cluster with the given id, nodes, partitions and topicIds
      Parameters:
      nodes - The nodes in the cluster
      partitions - Information about a subset of the topic-partitions this cluster hosts
  • Method Details

    • empty

      public static Cluster empty()
      Create an empty cluster instance with no nodes and no topic-partitions.
    • bootstrap

      public static Cluster bootstrap(List<InetSocketAddress> addresses)
      Create a "bootstrap" cluster using the given list of host/ports
      Parameters:
      addresses - The addresses
      Returns:
      A cluster for these hosts/ports
    • withPartitions

      public Cluster withPartitions(Map<TopicPartition,PartitionInfo> partitions)
      Return a copy of this cluster combined with `partitions`.
    • nodes

      public List<Node> nodes()
      Returns:
      The known set of nodes
    • nodeById

      public Node nodeById(int id)
      Get the node by the node id (or null if the node is not online or does not exist)
      Parameters:
      id - The id of the node
      Returns:
      The node, or null if the node is not online or does not exist
    • nodeIfOnline

      public Optional<Node> nodeIfOnline(TopicPartition partition, int id)
      Get the node by node id if the replica for the given partition is online
      Parameters:
      partition - The TopicPartition
      id - The node id
      Returns:
      the node
    • leaderFor

      public Node leaderFor(TopicPartition topicPartition)
      Get the current leader for the given topic-partition
      Parameters:
      topicPartition - The topic and partition we want to know the leader for
      Returns:
      The node that is the leader for this topic-partition, or null if there is currently no leader
    • partition

      public PartitionInfo partition(TopicPartition topicPartition)
      Get the metadata for the specified partition
      Parameters:
      topicPartition - The topic and partition to fetch info for
      Returns:
      The metadata about the given topic and partition, or null if none is found
    • partitionsForTopic

      public List<PartitionInfo> partitionsForTopic(String topic)
      Get the list of partitions for this topic
      Parameters:
      topic - The topic name
      Returns:
      A list of partitions
    • partitionCountForTopic

      public Integer partitionCountForTopic(String topic)
      Get the number of partitions for the given topic.
      Parameters:
      topic - The topic to get the number of partitions for
      Returns:
      The number of partitions or null if there is no corresponding metadata
    • availablePartitionsForTopic

      public List<PartitionInfo> availablePartitionsForTopic(String topic)
      Get the list of available partitions for this topic
      Parameters:
      topic - The topic name
      Returns:
      A list of partitions
    • partitionsForNode

      public List<PartitionInfo> partitionsForNode(int nodeId)
      Get the list of partitions whose leader is this node
      Parameters:
      nodeId - The node id
      Returns:
      A list of partitions
    • topics

      public Set<String> topics()
      Get all topics.
      Returns:
      a set of all topics
    • unauthorizedTopics

      public Set<String> unauthorizedTopics()
    • invalidTopics

      public Set<String> invalidTopics()
    • internalTopics

      public Set<String> internalTopics()
    • isBootstrapConfigured

      public boolean isBootstrapConfigured()
    • clusterResource

      public ClusterResource clusterResource()
    • controller

      public Node controller()
    • topicIds

      public Collection<Uuid> topicIds()
    • topicId

      public Uuid topicId(String topic)
    • topicName

      public String topicName(Uuid topicId)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object