Sha256: 46c629b9a6ac1c58b0c5436ae5e41e868b43d4f21926d4ea99c1aabbafb9a750

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

require 'pika_que'
require 'pika_que/codecs/rails'
require 'thread'

module ActiveJob
  module QueueAdapters
    # == PikaQue adapter for Active Job
    #
    # PikaQue is a RabbitMQ background processing framework for Ruby.
    #
    # Read more about PikaQue {here}[https://github.com/dwkoogt/pika_que].
    #
    # To use PikaQue set the queue_adapter config to +:pika_que+.
    #
    #   Rails.application.config.active_job.queue_adapter = :pika_que
    #
    class PikaQueAdapter
      @monitor = Monitor.new

      class << self
        def enqueue(job) #:nodoc:
          @monitor.synchronize do
            JobWrapper.enqueue job.serialize, to_queue: job.queue_name
          end
        end

        def enqueue_at(job, timestamp) #:nodoc:
          @monitor.synchronize do
            JobWrapper.enqueue_at job.serialize, timestamp, routing_key: job.queue_name
          end
        end
      end

      class JobWrapper #:nodoc:
        extend PikaQue::Worker::ClassMethods
        config codec: PikaQue::Codecs::RAILS
      end
    end

    autoload :PikaQueAdapter
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pika_que-0.1.0 lib/active_job/queue_adapters/pika_que_adapter.rb