Module: Karafka::Pro::Routing::Features::VirtualPartitions::Topic
- Defined in:
- lib/karafka/pro/routing/features/virtual_partitions/topic.rb
Overview
Topic extensions to be able to manage virtual partitions feature
Instance Method Summary collapse
-
#initialize ⇒ Object
This method calls the parent class initializer and then sets up the extra instance variable to nil.
-
#to_h ⇒ Hash
Topic with all its native configuration options plus manual offset management namespace settings.
-
#virtual_partitions(max_partitions: Karafka::App.config.concurrency, partitioner: nil, offset_metadata_strategy: :current, reducer: nil, distribution: :consistent) ⇒ VirtualPartitions
Method that allows to set the virtual partitions details during the routing configuration and then allows to retrieve it.
-
#virtual_partitions? ⇒ Boolean
Are virtual partitions enabled for given topic.
Instance Method Details
#initialize ⇒ Object
This method calls the parent class initializer and then sets up the extra instance variable to nil. The explicit initialization to nil is included as an optimization for Ruby’s object shapes system, which improves memory layout and access performance.
17 18 19 20 |
# File 'lib/karafka/pro/routing/features/virtual_partitions/topic.rb', line 17 def initialize(...) super @virtual_partitions = nil end |
#to_h ⇒ Hash
Returns topic with all its native configuration options plus manual offset management namespace settings.
64 65 66 67 68 |
# File 'lib/karafka/pro/routing/features/virtual_partitions/topic.rb', line 64 def to_h super.merge( virtual_partitions: virtual_partitions.to_h ).freeze end |
#virtual_partitions(max_partitions: Karafka::App.config.concurrency, partitioner: nil, offset_metadata_strategy: :current, reducer: nil, distribution: :consistent) ⇒ VirtualPartitions
Returns method that allows to set the virtual partitions details during the routing configuration and then allows to retrieve it.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/karafka/pro/routing/features/virtual_partitions/topic.rb', line 38 def virtual_partitions( max_partitions: Karafka::App.config.concurrency, partitioner: nil, offset_metadata_strategy: :current, reducer: nil, distribution: :consistent ) @virtual_partitions ||= Config.new( active: !partitioner.nil?, max_partitions: max_partitions, partitioner: partitioner, offset_metadata_strategy: , # If no reducer provided, we use this one. It just runs a modulo on the sum of # a stringified version, providing fairly good distribution. reducer: reducer || ->(virtual_key) { virtual_key.to_s.sum % max_partitions }, distribution: distribution ) end |
#virtual_partitions? ⇒ Boolean
Returns are virtual partitions enabled for given topic.
58 59 60 |
# File 'lib/karafka/pro/routing/features/virtual_partitions/topic.rb', line 58 def virtual_partitions? virtual_partitions.active? end |