Module: Karafka::Routing::Features::Declaratives::Topic

Defined in:
lib/karafka/routing/features/declaratives/topic.rb

Overview

Extension for managing Kafka topic configuration

Instance Method Summary collapse

Instance Method Details

#config(active: true, partitions: 1, replication_factor: 1, **details) ⇒ Config

Returns defined structure.

Parameters:

  • active (Boolean) (defaults to: true)

    is the topic structure management feature active

  • partitions (Integer) (defaults to: 1)

    number of partitions for the topic

  • replication_factor (Integer) (defaults to: 1)

    replication factor for the topic

  • details (Hash)

    extra configuration for the topic

Options Hash (**details):

  • :retention.ms (String)

    retention time in milliseconds

  • :compression.type (String)

    compression type (none, gzip, snappy, lz4, zstd)

Returns:

  • (Config)

    defined structure



26
27
28
29
30
31
32
33
# File 'lib/karafka/routing/features/declaratives/topic.rb', line 26

def config(active: true, partitions: 1, replication_factor: 1, **details)
  @declaratives ||= Config.new(
    active: active,
    partitions: partitions,
    replication_factor: replication_factor,
    details: details
  )
end

#declarativesConfig

Returns config details.

Returns:



36
37
38
# File 'lib/karafka/routing/features/declaratives/topic.rb', line 36

def declaratives
  config
end

#declaratives?true

Returns declaratives is always active.

Returns:

  • (true)

    declaratives is always active



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

def declaratives?
  declaratives.active?
end

#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.



13
14
15
16
# File 'lib/karafka/routing/features/declaratives/topic.rb', line 13

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

#to_hHash

Returns topic with all its native configuration options plus declaratives settings.

Returns:

  • (Hash)

    topic with all its native configuration options plus declaratives settings



47
48
49
50
51
# File 'lib/karafka/routing/features/declaratives/topic.rb', line 47

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