Method: Kafka::Partitioner#call
- Defined in:
- lib/kafka/partitioner.rb
#call(partition_count, message) ⇒ Integer
Assigns a partition number based on a partition key. If no explicit partition key is provided, the message key will be used instead.
If the key is nil, then a random partition is selected. Otherwise, a digest of the key is used to deterministically find a partition. As long as the number of partitions doesn't change, the same key will always be assigned to the same partition.
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/kafka/partitioner.rb', line 27 def call(partition_count, ) raise ArgumentError if partition_count == 0 # If no explicit partition key is specified we use the message key instead. key = .partition_key || .key if key.nil? rand(partition_count) else @digest.hash(key) % partition_count end end |