Method: Kafka::RoundRobinAssignmentStrategy#call
- Defined in:
- lib/kafka/round_robin_assignment_strategy.rb
#call(cluster:, members:, partitions:) ⇒ Hash<String, Array<Kafka::ConsumerGroup::Assignor::Partition>] a hash mapping member ids to partitions.
Assign the topic partitions to the group members.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/kafka/round_robin_assignment_strategy.rb', line 21 def call(cluster:, members:, partitions:) partitions_per_member = Hash.new {|h, k| h[k] = [] } relevant_partitions = valid_sorted_partitions(members, partitions) members_ids = members.keys iterator = (0...members.size).cycle idx = iterator.next relevant_partitions.each do |partition| topic = partition.topic while !members[members_ids[idx]].topics.include?(topic) idx = iterator.next end partitions_per_member[members_ids[idx]] << partition idx = iterator.next end partitions_per_member end |