Module: Karafka::Routing::Features::Deserializers::Topic

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

Overview

Routing topic deserializers API. It allows to configure deserializers for various components of each message.

Instance Method Summary collapse

Instance Method Details

#deserializer(payload) ⇒ Object

Supports pre 2.4 format where only payload deserializer could be defined. We do not retire this format because it is not bad when users do not do anything advanced with key or headers

Parameters:

  • payload (Object)

    payload deserializer



40
41
42
# File 'lib/karafka/routing/features/deserializers/topic.rb', line 40

def deserializer(payload)
  deserializers(payload: payload)
end

#deserializers(payload: Karafka::Deserializers::Payload.new, key: Karafka::Deserializers::Key.new, headers: Karafka::Deserializers::Headers.new) ⇒ Object

Allows for setting all the deserializers with standard defaults

Parameters:

  • payload (Object) (defaults to: Karafka::Deserializers::Payload.new)

    Deserializer for the message payload

  • key (Object) (defaults to: Karafka::Deserializers::Key.new)

    deserializer for the message key

  • headers (Object) (defaults to: Karafka::Deserializers::Headers.new)

    deserializer for the message headers



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/karafka/routing/features/deserializers/topic.rb', line 23

def deserializers(
  payload: Karafka::Deserializers::Payload.new,
  key: Karafka::Deserializers::Key.new,
  headers: Karafka::Deserializers::Headers.new
)
  @deserializers ||= Config.new(
    active: true,
    payload: payload,
    key: key,
    headers: headers
  )
end

#deserializers?Boolean

Returns Deserializers are always active.

Returns:

  • (Boolean)

    Deserializers are always active



45
46
47
# File 'lib/karafka/routing/features/deserializers/topic.rb', line 45

def deserializers?
  deserializers.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.



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

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

#to_hHash

Returns topic setup hash.

Returns:

  • (Hash)

    topic setup hash



50
51
52
53
54
# File 'lib/karafka/routing/features/deserializers/topic.rb', line 50

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