class ActiveJob::GoogleCloudPubsub::Adapter
Public Class Methods
new(async: true, pubsub: Google::Cloud::Pubsub.new(timeout: 60), logger: Logger.new($stdout))
click to toggle source
# File lib/activejob_google_cloud_pubsub/adapter.rb, line 12 def initialize(async: true, pubsub: Google::Cloud::Pubsub.new(timeout: 60), logger: Logger.new($stdout)) @executor = async ? :io : :immediate @pubsub = pubsub @logger = logger end
Public Instance Methods
enqueue(job, attributes = {})
click to toggle source
# File lib/activejob_google_cloud_pubsub/adapter.rb, line 18 def enqueue(job, attributes = {}) promise = Concurrent::Promise.execute(executor: @executor) do @pubsub.topic_for(job.queue_name).publish JSON.dump(job.serialize), attributes end promise.rescue do |e| @logger&.error e end end
enqueue_at(job, timestamp)
click to toggle source
# File lib/activejob_google_cloud_pubsub/adapter.rb, line 27 def enqueue_at(job, timestamp) enqueue job, timestamp: timestamp end