class Delayed::Backend::Azure::Job
Public Class Methods
new(data = {})
click to toggle source
# File lib/delayed/backend/azure.rb, line 20 def initialize(data = {}) @msg = nil if data.is_a?(::Azure::Queue::Message) @msg = data data = JSON.load(data.message_text) end data.symbolize_keys! payload_obj = data.delete(:payload_object) || data.delete(:handler) @queue_name = data[:queue_name] || Delayed::Worker.queue_name @delay = data[:delay] || Delayed::Worker.delay @timeout = data[:timeout] || Delayed::Worker.timeout @expires_in = data[:expires_in] || Delayed::Worker.expires_in @attributes = data self.payload_object = payload_obj end
Public Instance Methods
destroy()
click to toggle source
# File lib/delayed/backend/azure.rb, line 79 def destroy if id and pop_receipt aure.delete_message(queue_name, id, pop_receipt) end end
fail!()
click to toggle source
# File lib/delayed/backend/azure.rb, line 85 def fail! destroy # v2: move to separate queue end
id()
click to toggle source
# File lib/delayed/backend/azure.rb, line 111 def id @msg.id if @msg end
lock_exclusively!(*args)
click to toggle source
No need to check locks
# File lib/delayed/backend/azure.rb, line 97 def lock_exclusively!(*args) true end
payload_object()
click to toggle source
# File lib/delayed/backend/azure.rb, line 38 def payload_object @payload_object ||= YAML.load(self.handler) rescue TypeError, LoadError, NameError, ArgumentError => e raise DeserializationError, "Job failed to load: #{e.message}. Handler: #{handler.inspect}" end
payload_object=(object)
click to toggle source
# File lib/delayed/backend/azure.rb, line 45 def payload_object=(object) if object.is_a? String @payload_object = YAML.load(object) self.handler = object else @payload_object = object self.handler = object.to_yaml end end
pop_receipt()
click to toggle source
# File lib/delayed/backend/azure.rb, line 115 def pop_receipt @msg.pop_receipt if @msg end
reload(*args)
click to toggle source
Calls superclass method
# File lib/delayed/backend/azure.rb, line 106 def reload(*args) # reset super end
save()
click to toggle source
# File lib/delayed/backend/azure.rb, line 55 def save if @attributes[:handler].blank? raise "Handler missing!" end payload = JSON.dump(@attributes) destroy if @msg unless queues.include? queue_name azure.create_queue queue_name queues << queue_name end azure.create_message queue_name, payload, timeout: @timeout, visibility_timeout: @delay, message_ttl: @expires_in true end
save!()
click to toggle source
# File lib/delayed/backend/azure.rb, line 75 def save! save end
unlock(*args)
click to toggle source
No need to check locks
# File lib/delayed/backend/azure.rb, line 102 def unlock(*args) true end
update_attributes(attributes)
click to toggle source
# File lib/delayed/backend/azure.rb, line 90 def update_attributes(attributes) attributes.symbolize_keys! @attributes.merge attributes save end
Private Instance Methods
azure()
click to toggle source
# File lib/delayed/backend/azure.rb, line 125 def azure ::Delayed::Worker.azure end
queue_name()
click to toggle source
# File lib/delayed/backend/azure.rb, line 121 def queue_name "#{@queue_name}-#{@attributes[:priority] || 0}" end
queues()
click to toggle source
# File lib/delayed/backend/azure.rb, line 129 def queues ::Delayed::Worker.queues end