Talk to Siberite
queue server from Ruby¶ ↑
Siberite-client is a library that allows you to talk to a Siberite queue server from ruby. As Siberite
uses the memcache protocol, siberite-client is implemented as a wrapper around the memcached gem.
Installation¶ ↑
Add this line to your application’s Gemfile:
gem 'siberite-client'
And then execute:
$ bundle
Or install it yourself as:
$ gem install siberite-client
Basic Usage¶ ↑
Siberite::Client.new
takes a list of servers and an options hash. See the rdoc for Memcached for an explanation of what the various options do.
require 'siberite' queue = Siberite::Client.new('localhost:22133') queue.set('a_queue', 'foo') queue.set('a_queue', 'bar') queue.set('a_queue', 'baz') queue.get('a_queue') # => 'foo' # opens a reliable read queue.get_open('a_queue') # => 'bar' queue.get_close('a_queue') # acknowledges previously opened read and opens a new one) queue.get_close_open('a_queue') # => 'baz' # raw format, skip marshalling queue.set('a_queue', [1,2,3].to_json, 0, raw: true) queue.get('a_queue', raw: true) # => "[1,2,3]"
Client Proxies¶ ↑
siberite-client comes with a number of decorators that change the behavior of the raw client.
client = Siberite::Client.new('localhost:22133') client.get('empty_queue') # => nil # Blocking client queue = Siberite::Client::Blocking.new(client) queue.get('empty_queue') # does not return until it pulls something from the queue # Namespaced client queue = Siberite::Client::Namespace.new('foo', client) queue.set('work', 1) # adds message to foo:work queue # Partitioned client client_1 = Siberite::Client.new('siberite01.example.com:22133') client_2 = Siberite::Client.new('siberite02.example.com:22133') default_client = Siberite::Client.new('siberite03.example.com:22133') client = Siberite::Client::Partitioning.new( 'queue1' => client_1, ['queue2', 'queue3'] => client_2, default: default_client )
Configuration Management¶ ↑
Siberite::Config
provides some tools for pulling queue config out of a YAML config file.
Siberite::Config.load 'path/to/siberite.yml' Siberite::Config.environment = 'production' # defaults to development queue = Siberite::Config.new_client
This tells siberite-client to look for path/to/siberite.yml
, and pull the client configuration out of the ‘production’ key in that file. Sample config:
defaults: &defaults distribution: :random timeout: 2 connect_timeout: 1 production: <<: *defaults servers: - siberite01.example.com:22133 - siberite02.example.com:22133 - siberite03.example.com:22133 development: <<: *defaults servers: - localhost:22133 show_backtraces: true