Sha256: 3ccb456c17237738556532faf50998d182ac8596a84669cac576f3b03c3169bf

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Karafka
  # ActiveJob related Karafka stuff
  module ActiveJob
    # Karafka routing ActiveJob related components
    module Routing
      # Routing extensions for ActiveJob
      module Extensions
        # This method simplifies routes definition for ActiveJob topics / queues by auto-injecting
        # the consumer class
        # @param name [String, Symbol] name of the topic where ActiveJobs jobs should go
        # @param block [Proc] block that we can use for some extra configuration
        def active_job_topic(name, &block)
          topic(name) do
            consumer App.config.internal.active_job.consumer_class

            next unless block

            instance_eval(&block)

            target.tags << :active_job

            # This is handled by our custom ActiveJob consumer
            # Without this, default behaviour would cause messages to skip upon shutdown as the
            # offset would be committed for the last message
            manual_offset_management true
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
karafka-2.0.15 lib/karafka/active_job/routing/extensions.rb
karafka-2.0.14 lib/karafka/active_job/routing/extensions.rb
karafka-2.0.13 lib/karafka/active_job/routing/extensions.rb
karafka-2.0.12 lib/karafka/active_job/routing/extensions.rb
karafka-2.0.11 lib/karafka/active_job/routing/extensions.rb
karafka-2.0.10 lib/karafka/active_job/routing/extensions.rb
karafka-2.0.9 lib/karafka/active_job/routing/extensions.rb