Class: Kongnomal::JobQueue

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/kongnomal/job_queue.rb

Constant Summary collapse

JOB_EVENT_TUBE =
"job.events"

Instance Method Summary collapse

Constructor Details

#initialize(beanstalk_server_address, tube = "default") ⇒ JobQueue

Returns a new instance of JobQueue.



8
9
10
11
12
# File 'lib/kongnomal/job_queue.rb', line 8

def initialize(beanstalk_server_address, tube = "default")
  @tube = tube
  @job_tube = Beanstalk::Connection.new(beanstalk_server_address, tube)
  @event_tube = Beanstalk::Connection.new(beanstalk_server_address, JOB_EVENT_TUBE)
end

Instance Method Details

#delete(id) ⇒ Object



32
33
34
35
36
37
# File 'lib/kongnomal/job_queue.rb', line 32

def delete(id)
  beanstalk_job = @job_tube.peek_job(id)
  deleted = @job_tube.delete(id)
  @event_tube.put({"state" => Kongnomal::Job::DELETED, "tube" => @tube, "id" => beanstalk_job.id, "body" => beanstalk_job.body}.to_json) if deleted == :ok
  deleted
end

#put(body, pri = 65536, delay = 0, ttr = 120) ⇒ Object



14
15
16
17
18
# File 'lib/kongnomal/job_queue.rb', line 14

def put(body, pri=65536, delay=0, ttr=120)
  job_id = @job_tube.put(body, pri, delay, ttr)
  @event_tube.put({"state" => Kongnomal::Job::PUT, "tube" => @tube, "id" => job_id, "body" => body}.to_json)
  job_id
end

#reserve(timeout = nil) ⇒ Object



26
27
28
29
30
# File 'lib/kongnomal/job_queue.rb', line 26

def reserve(timeout=nil)
  beanstalk_job = @job_tube.reserve(timeout)
  @event_tube.put({"state" => Kongnomal::Job::RESERVED, "tube" => @tube, "id" => beanstalk_job.id, "body" => beanstalk_job.body}.to_json)
  Kongnomal::Job.new(@event_tube, beanstalk_job, @tube)
end

#yput(obj, pri = 65536, delay = 0, ttr = 120) ⇒ Object



20
21
22
23
24
# File 'lib/kongnomal/job_queue.rb', line 20

def yput(obj, pri=65536, delay=0, ttr=120)
  job_id = @job_tube.yput(obj, pri, delay, ttr)
  @event_tube.put({"state" => Kongnomal::Job::PUT, "tube" => @tube, "id" => job_id, "body" => YAML.dump(obj)}.to_json)
  job_id
end