Module: Karafka::Pro::Routing::Features::Filtering::Topic

Defined in:
lib/karafka/pro/routing/features/filtering/topic.rb

Overview

Filtering feature topic extensions

Instance Method Summary collapse

Instance Method Details

#filter(factory = nil) ⇒ Object

Parameters:

  • factory (#call, nil) (defaults to: nil)

    Callable that can produce new filters instances per assigned topic partition. nil as default so this feature is disabled



49
50
51
52
53
# File 'lib/karafka/pro/routing/features/filtering/topic.rb', line 49

def filter(factory = nil)
  @filtering ||= Config.new(factories: [])
  @filtering.factories << factory if factory
  @filtering
end

#filteringFiltering::Config

Returns alias to match the naming API for features.

Returns:



56
57
58
# File 'lib/karafka/pro/routing/features/filtering/topic.rb', line 56

def filtering(*)
  filter(*)
end

#filtering?Boolean

Returns is a given job throttled.

Returns:

  • (Boolean)

    is a given job throttled



61
62
63
# File 'lib/karafka/pro/routing/features/filtering/topic.rb', line 61

def filtering?
  filtering.active?
end

#initializeObject

This method sets up the extra instance variable to nil before calling the parent class initializer. The explicit initialization to nil is included as an optimization for Ruby's object shapes system, which improves memory layout and access performance.



42
43
44
45
# File 'lib/karafka/pro/routing/features/filtering/topic.rb', line 42

def initialize(...)
  @filtering = nil
  super
end

#to_hHash

Returns topic with all its native configuration options plus throttling.

Returns:

  • (Hash)

    topic with all its native configuration options plus throttling



66
67
68
69
70
# File 'lib/karafka/pro/routing/features/filtering/topic.rb', line 66

def to_h
  super.merge(
    filtering: filtering.to_h
  ).freeze
end