Sha256: 99e2ccbfd6ca4e235fbe99af11a2cc05b9b524dc1f33421f68c2a7fb13090b17

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

module Taskinator
  module Queues

    DefaultConfig = {
      :definition_queue => :default,
      :process_queue => :default,
      :task_queue => :default
    }.freeze

    def self.create_adapter(adapter, config={})
      begin
        LoggedAdapter.new(send("create_#{adapter}_adapter", config))
      rescue NoMethodError
        raise "The queue adapter `#{adapter}` is not yet supported or it's runtime isn't loaded."
      end
    end

    class LoggedAdapter < Delegator

      attr_reader :adapter

      def initialize(adapter)
        Taskinator.logger.info("Initialized '#{adapter.class.name}' queue adapter")
        @adapter = adapter
      end

      def __getobj__
        adapter
      end

      def enqueue_create_process(definition, uuid, args)
        Taskinator.logger.info("Enqueuing process creation for #{definition}")
        adapter.enqueue_create_process(definition, uuid, args)
      end

      def enqueue_process(process)
        Taskinator.logger.info("Enqueuing process #{process}")
        adapter.enqueue_process(process)
      end

      def enqueue_task(task)
        Taskinator.logger.info("Enqueuing task #{task}")
        adapter.enqueue_task(task)
      end

    end

  end
end

require 'taskinator/queues/active_job' if defined?(ApplicationJob)
require 'taskinator/queues/delayed_job' if defined?(Delayed)
require 'taskinator/queues/resque' if defined?(Resque)
require 'taskinator/queues/sidekiq' if defined?(Sidekiq)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
taskinator-0.4.7 lib/taskinator/queues.rb
taskinator-0.4.6 lib/taskinator/queues.rb
taskinator-0.4.5 lib/taskinator/queues.rb
taskinator-0.4.4 lib/taskinator/queues.rb