Sha256: d606c9fa4c930739861c67d4e1890dfd384d24b8688db77afab04f87da0b7494

Contents?: true

Size: 1.71 KB

Versions: 19

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

module Karafka
  module Routing
    module Features
      # Deserializers for all the message details (payload, headers, key)
      class Deserializers < Base
        # Routing topic deserializers API. It allows to configure deserializers for various
        # components of each message.
        module Topic
          # Allows for setting all the deserializers with standard defaults
          # @param payload [Object] Deserializer for the message payload
          # @param key [Object] deserializer for the message key
          # @param headers [Object] deserializer for the message headers
          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

          # 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
          # @param payload [Object] payload deserializer
          def deserializer(payload)
            deserializers(payload: payload)
          end

          # @return [Boolean] Deserializers are always active
          def deserializers?
            deserializers.active?
          end

          # @return [Hash] topic setup hash
          def to_h
            super.merge(
              deserializers: deserializers.to_h
            ).freeze
          end
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
karafka-2.4.17 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.16 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.15 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.14 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.13 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.12 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.11 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.10 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.9 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.8 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.7 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.6 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.5 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.4 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.3 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.0 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.0.rc1 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.0.beta2 lib/karafka/routing/features/deserializers/topic.rb
karafka-2.4.0.beta1 lib/karafka/routing/features/deserializers/topic.rb