Class StreamsPartitionAssignor
- java.lang.Object
-
- org.apache.kafka.streams.processor.internals.StreamsPartitionAssignor
-
- All Implemented Interfaces:
org.apache.kafka.clients.consumer.internals.PartitionAssignor
,org.apache.kafka.common.Configurable
public class StreamsPartitionAssignor extends java.lang.Object implements org.apache.kafka.clients.consumer.internals.PartitionAssignor, org.apache.kafka.common.Configurable
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StreamsPartitionAssignor.Error
-
Field Summary
Fields Modifier and Type Field Description protected static java.util.Comparator<org.apache.kafka.common.TopicPartition>
PARTITION_COMPARATOR
protected java.util.Set<java.lang.Integer>
supportedVersions
protected int
usedSubscriptionMetadataVersion
-
Constructor Summary
Constructors Constructor Description StreamsPartitionAssignor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<java.lang.String,org.apache.kafka.clients.consumer.internals.PartitionAssignor.Assignment>
assign(org.apache.kafka.common.Cluster metadata, java.util.Map<java.lang.String,org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription> subscriptions)
void
configure(java.util.Map<java.lang.String,?> configs)
We need to have the PartitionAssignor and its StreamThread to be mutually accessible since the former needs later's cached metadata while sending subscriptions, and the latter needs former's returned assignment when adding tasks.java.lang.String
name()
void
onAssignment(org.apache.kafka.clients.consumer.internals.PartitionAssignor.Assignment assignment)
protected void
processLatestVersionAssignment(AssignmentInfo info, java.util.List<org.apache.kafka.common.TopicPartition> partitions, java.util.Map<TaskId,java.util.Set<org.apache.kafka.common.TopicPartition>> activeTasks, java.util.Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.common.PartitionInfo> topicToPartitionInfo)
org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription
subscription(java.util.Set<java.lang.String> topics)
protected TaskManager
taskManger()
protected java.lang.String
userEndPoint()
-
-
-
Field Detail
-
supportedVersions
protected final java.util.Set<java.lang.Integer> supportedVersions
-
PARTITION_COMPARATOR
protected static final java.util.Comparator<org.apache.kafka.common.TopicPartition> PARTITION_COMPARATOR
-
usedSubscriptionMetadataVersion
protected int usedSubscriptionMetadataVersion
-
-
Method Detail
-
userEndPoint
protected java.lang.String userEndPoint()
-
taskManger
protected TaskManager taskManger()
-
configure
public void configure(java.util.Map<java.lang.String,?> configs)
We need to have the PartitionAssignor and its StreamThread to be mutually accessible since the former needs later's cached metadata while sending subscriptions, and the latter needs former's returned assignment when adding tasks.- Specified by:
configure
in interfaceorg.apache.kafka.common.Configurable
- Throws:
org.apache.kafka.common.KafkaException
- if the stream thread is not specified
-
name
public java.lang.String name()
- Specified by:
name
in interfaceorg.apache.kafka.clients.consumer.internals.PartitionAssignor
-
subscription
public org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription subscription(java.util.Set<java.lang.String> topics)
- Specified by:
subscription
in interfaceorg.apache.kafka.clients.consumer.internals.PartitionAssignor
-
assign
public java.util.Map<java.lang.String,org.apache.kafka.clients.consumer.internals.PartitionAssignor.Assignment> assign(org.apache.kafka.common.Cluster metadata, java.util.Map<java.lang.String,org.apache.kafka.clients.consumer.internals.PartitionAssignor.Subscription> subscriptions)
- Specified by:
assign
in interfaceorg.apache.kafka.clients.consumer.internals.PartitionAssignor
-
onAssignment
public void onAssignment(org.apache.kafka.clients.consumer.internals.PartitionAssignor.Assignment assignment)
- Specified by:
onAssignment
in interfaceorg.apache.kafka.clients.consumer.internals.PartitionAssignor
- Throws:
TaskAssignmentException
- if there is no task id for one of the partitions specified
-
processLatestVersionAssignment
protected void processLatestVersionAssignment(AssignmentInfo info, java.util.List<org.apache.kafka.common.TopicPartition> partitions, java.util.Map<TaskId,java.util.Set<org.apache.kafka.common.TopicPartition>> activeTasks, java.util.Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.common.PartitionInfo> topicToPartitionInfo)
-
-