Sha256: da123972c742176f6611e5e0de958df62480e7d1bbe186f6f480a5998822ec37

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module Karafka
  module Routing
    # Default routes mapper that does not remap things
    # Mapper can be used for Kafka providers that require namespaced topic names. Instead of being
    # provider dependent, we can then define mapper and use internally "pure" topic names in
    # routes and responders
    #
    # @example Mapper for mapping prefixed topics
    #   module MyMapper
    #     PREFIX = "my_user_name."
    #
    #     def incoming(topic)
    #       topic.to_s.gsub(PREFIX, '')
    #     end
    #
    #     def outgoing(topic)
    #       "#{PREFIX}#{topic}"
    #     end
    #   end
    #
    # @example Mapper for replacing "." with "_" in topic names
    #   module MyMapper
    #     PREFIX = "my_user_name."
    #
    #     def incoming(topic)
    #       topic.to_s.gsub('.', '_')
    #     end
    #
    #     def outgoing(topic)
    #       topic.to_s.gsub('_', '.')
    #     end
    #   end
    module Mapper
      class << self
        # @param topic [String, Symbol] topic
        # @return [String, Symbol] same topic as on input
        # @example
        #   incoming('topic_name') #=> 'topic_name'
        def incoming(topic)
          topic
        end

        # @param topic [String, Symbol] topic
        # @return [String, Symbol] same topic as on input
        # @example
        #   outgoing('topic_name') #=> 'topic_name'
        def outgoing(topic)
          topic
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
karafka-1.0.0 lib/karafka/routing/mapper.rb
karafka-1.0.0.rc1 lib/karafka/routing/mapper.rb
karafka-0.6.0.rc2 lib/karafka/routing/mapper.rb
karafka-0.6.0.rc1 lib/karafka/routing/mapper.rb