Class: Deimos::BaseConsumer

Inherits:
Object
  • Object
show all
Includes:
SharedConfig
Defined in:
lib/deimos/base_consumer.rb

Overview

Shared methods for Kafka Consumers

Direct Known Subclasses

BatchConsumer, Consumer

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decoderDeimos::SchemaBackends::Base



10
11
12
13
# File 'lib/deimos/base_consumer.rb', line 10

def decoder
  @decoder ||= Deimos.schema_backend(schema: config[:schema],
                                     namespace: config[:namespace])
end

.key_decoderDeimos::SchemaBackends::Base



16
17
18
19
# File 'lib/deimos/base_consumer.rb', line 16

def key_decoder
  @key_decoder ||= Deimos.schema_backend(schema: config[:key_schema],
                                         namespace: config[:namespace])
end

Instance Method Details

#decode_key(key) ⇒ Object

Helper method to decode an encoded key.

Parameters:

  • key (String)

Returns:

  • (Object)

    the decoded key.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/deimos/base_consumer.rb', line 25

def decode_key(key)
  return nil if key.nil?

  config = self.class.config
  unless config[:key_configured]
    raise 'No key config given - if you are not decoding keys, please use '\
      '`key_config plain: true`'
  end

  if config[:key_field]
    self.class.decoder.decode_key(key, config[:key_field])
  elsif config[:key_schema]
    self.class.key_decoder.decode(key, schema: config[:key_schema])
  else # no encoding
    key
  end
end