Sha256: 8e829521e53f1c0787281ca13dee90bf3a3690c4c4afc34d55836d3224965fef

Contents?: true

Size: 1.68 KB

Versions: 60

Compression:

Stored size: 1.68 KB

Contents

# frozen_string_literal: true

# This Karafka component is a Pro component under a commercial license.
# This Karafka component is NOT licensed under LGPL.
#
# All of the commercial components are present in the lib/karafka/pro directory of this
# repository and their usage requires commercial license agreement.
#
# Karafka has also commercial-friendly license, commercial support and commercial components.
#
# By sending a pull request to the pro components, you are agreeing to transfer the copyright of
# your code to Maciej Mensfeld.

module Karafka
  module Pro
    module Routing
      module Features
        class Filtering < Base
          # Filtering feature topic extensions
          module Topic
            # @param factory [#call, nil] Callable that can produce new filters instances per
            #   assigned topic partition. nil as default so this feature is disabled
            def filter(factory = nil)
              @filtering ||= Config.new(factories: [])
              @filtering.factories << factory if factory
              @filtering
            end

            # @param args [Array] Anything `#filter` accepts
            # @return [Filtering::Config] alias to match the naming API for features
            def filtering(*args)
              filter(*args)
            end

            # @return [Boolean] is a given job throttled
            def filtering?
              filtering.active?
            end

            # @return [Hash] topic with all its native configuration options plus throttling
            def to_h
              super.merge(
                filtering: filtering.to_h
              ).freeze
            end
          end
        end
      end
    end
  end
end

Version data entries

60 entries across 60 versions & 1 rubygems

Version Path
karafka-2.2.1 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.2.0 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.13 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.12 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.11 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.10 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.9 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.8 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.7 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.6 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.5 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.5.beta1 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.4 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.3 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.2 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.1 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.1.0 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.0.41 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.0.40 lib/karafka/pro/routing/features/filtering/topic.rb
karafka-2.0.39 lib/karafka/pro/routing/features/filtering/topic.rb