Module: Karafka::Pro::Routing::Features::Patterns::Topic

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

Overview

Patterns feature topic extensions

Instance Method Summary collapse

Instance Method Details

#initializeObject

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.



34
35
36
37
# File 'lib/karafka/pro/routing/features/patterns/topic.rb', line 34

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

#patterns(active: false, type: :regular, pattern: nil) ⇒ Object

Parameters:

  • active (Boolean) (defaults to: false)

    is this topic active member of patterns

  • type (Symbol) (defaults to: :regular)

    type of topic taking part in pattern matching

  • pattern (Regexp) (defaults to: nil)

    regular expression for matching



48
49
50
# File 'lib/karafka/pro/routing/features/patterns/topic.rb', line 48

def patterns(active: false, type: :regular, pattern: nil)
  @patterns ||= Config.new(active: active, type: type, pattern: pattern)
end

#patterns?Boolean

Returns is this topic a member of patterns.

Returns:

  • (Boolean)

    is this topic a member of patterns



53
54
55
# File 'lib/karafka/pro/routing/features/patterns/topic.rb', line 53

def patterns?
  patterns.active?
end

#subscription_nameString

Returns subscription name or the regexp string representing matching of new topics that should be detected.

Returns:

  • (String)

    subscription name or the regexp string representing matching of new topics that should be detected.



41
42
43
# File 'lib/karafka/pro/routing/features/patterns/topic.rb', line 41

def subscription_name
  patterns.active? && patterns.matcher? ? patterns.pattern.regexp_string : super
end

#to_hHash

Returns topic with all its native configuration options plus patterns.

Returns:

  • (Hash)

    topic with all its native configuration options plus patterns



58
59
60
61
62
# File 'lib/karafka/pro/routing/features/patterns/topic.rb', line 58

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