Project

geary

0.0
No commit activity in last 3 years
No release in over 3 years
An attempt to replace gearman-ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Geary

Geary gives Gearman job processing a familiar face.

Getting Started

  1. Add Geary to your Gemfile:
gem 'geary', require: false
  1. Create a worker:
  require 'geary/worker'

  class FollowUpWorker
    extend Geary::Worker

    def perform(id)
      # User.find(id).tap do |user|
      #   FollowUpMailer.follow_up_with(user)
      # end
    end

  end
  1. Start working:
geary
  1. Send jobs to the workers:
FollowUpWorker.perform_async(1)

Configuring Geary

Without configuration, Geary will spawn 25 workers, each of which will process jobs from a Gearman server running on localhost:4730. Geary can be configured to process jobs from a different Gearman server, as well as from multiple servers. For instance, if you're running a Gearman server on a different address, you might start the workers like this:

geary -s gearman://localhost:4731

Processing jobs from multiple servers is a matter of passing in comma-delimited addresses:

geary -s gearman://localhost:4730,gearman://localhost:4731

Classes which extend themselves with Geary::Worker submit background jobs to a Gearman server running on localhost:4730 by default, but can be configured to submit jobs to multiple servers like so:

require 'geary/worker'

class OverheadWorker
  extend Geary::Worker

  use_gearman_client 'gearman://localhost:4730', 'gearman://localhost:4731'

  def perform ; end
end

The following code will submit four jobs.

4.times { OverheadWorker.perform_async }

If the server listening on port 4730 disappears midway, our gearman client will disconnect from it, and submit future jobs to the server listening on 4731. As of right now, there is no backoff behavior. If the server listening on 4731 disappears and we're still not out of jobs to submit, we'll attempt to reconnect to localhost:4730, potentially to our never-ending dismay.