class Delayed::Backend::SimpleQueueService::Job

Attributes

handler[RW]

Public Class Methods

clear_locks!(*args) click to toggle source

No need to check locks

# File lib/delayed/backend/simple_queue_service.rb, line 100
def self.clear_locks!(*args)
  true
end
db_time_now() click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 104
def self.db_time_now
  Time.now.utc
end
find_available(worker_name, limit = 5, max_run_time = nil) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 108
def self.find_available worker_name, limit = 5, max_run_time = nil
  messages = Delayed::Worker.sqs.receive_message :limit => limit, :wait_time_seconds => 20
  objects = []
  if messages
    messages = [messages] unless messages.is_a? Array
    messages.each do |m|
      objects << Delayed::Backend::SimpleQueueService::Job.new(m)
    end
  end
  # print '.'
  objects
end
new(data = {}) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 8
def initialize data = {}

  if data.is_a? AWS::SQS::ReceivedMessage
    @sqs_message = data
    data = MultiJson.load(@sqs_message.body)
  end

  # print data.to_yaml + "\n\n"

  data.symbolize_keys!
  payload_obj = data.delete(:payload_object) || data.delete(:handler)

  @attributes = data
  self.payload_object = payload_obj

end

Public Instance Methods

attempts() click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 81
def attempts
  @attributes[:attempts] || 0
end
attempts=(num) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 84
def attempts= num
  @attributes[:attempts] = num
end
destroy() click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 92
def destroy
  @sqs_message.delete if @sqs_message
end
id() click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 25
def id
  @sqs_message.id
end
last_error=(error) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 77
def last_error= error
  @attributes[:last_error] = error
end
lock_exclusively!(*args) click to toggle source

No need to check locks

# File lib/delayed/backend/simple_queue_service.rb, line 63
def lock_exclusively!(*args)
  true
end
payload_object=(object) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 29
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
reload(*args) click to toggle source
Calls superclass method
# File lib/delayed/backend/simple_queue_service.rb, line 72
def reload(*args)
  # reset
  super
end
run_at=(ts) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 88
def run_at= ts
  @attributes[:run_at] = ts
end
save() click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 39
def save

  payload = MultiJson.dump(@attributes.merge(:payload_object => YAML.dump(payload_object)))

  #puts "[SAVE] #{payload.inspect}"

  @sqs_message.delete if @sqs_message

  Delayed::Worker.sqs.send_message payload, :delay_seconds => [900,(attempts**3)].min

  true
end
save!() click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 52
def save!
  save
end
unlock(*args) click to toggle source

No need to check locks

# File lib/delayed/backend/simple_queue_service.rb, line 68
def unlock(*args)
  true
end
update_attributes(attributes) click to toggle source
# File lib/delayed/backend/simple_queue_service.rb, line 56
def update_attributes(attributes)
  attributes.symbolize_keys!
  @attributes.merge attributes
  save
end