public
Homepage: http://rubyforge.org/projects/starling
Clone URL: git://github.com/defunkt/starling.git
name age message
file .gitignore Mon Apr 28 14:06:06 -0700 2008 Remove old RubyForge cruft. Do things the stand... [grempe]
file CHANGELOG Fri Oct 10 06:27:01 -0700 2008 Implement the Delete call to delete a queue. [timshadel]
file LICENSE Mon Apr 28 17:26:27 -0700 2008 Whitespace cleanup. Removed trailing whitespace. [grempe]
file README.rdoc Fri Jul 18 20:10:02 -0700 2008 unfixed rdoc [mojodna]
file Rakefile Tue Aug 26 21:45:01 -0700 2008 move specs from test/ to spec/ for clarity [Blaine Cook]
directory bin/ Tue Jun 24 04:07:46 -0700 2008 removed leftover client code, upgraded version ... [advany]
directory etc/ Wed Oct 01 14:24:37 -0700 2008 Clean up and fix redhat init script. [gaffneyc]
directory lib/ Fri Oct 17 02:05:33 -0700 2008 If config file invalid print a nice message and... [jacobat]
directory spec/ Fri Oct 10 06:27:01 -0700 2008 Implement the Delete call to delete a queue. [timshadel]
file starling.gemspec Tue Aug 26 22:37:08 -0700 2008 Remove dependency on SyslogLogger so that Starl... [Blaine Cook]
README.rdoc

Name

Starling - a light weight server for reliable distributed message passing.

Description

Starling is a powerful but simple messaging server that enables reliable distributed queuing with an absolutely minimal overhead. It speaks the MemCache protocol for maximum cross-platform compatibility. Any language that speaks MemCache can take advantage of Starling’s queue facilities.

Installation

  This fork of the Starling source is hosted at GitHub and can be found at:

  http://github.com/starling/starling/tree/master

  The original source was to be found at RubyForge but no longer exists there.

  GitHub serves gems prefixed by a username to differentiate different forks.
  This project can be installed with:

  # THIS COMMAND ONE TIME ONLY
  gem sources -a http://gems.github.com/

  # As often as you like
  sudo gem install starling-starling

  See http://gems.github.com/ if you want more info about GitHub and gems.

Quick Start Usage

  # View the Starling help and usage message
  starling --help

  # In a console window start the Starling server.  By default
  # it runs verbosely in the foreground, listening on 127.0.0.1:22122
  # and stores its files under /tmp/starling:
  starling

  # In a new console test the put and get of messages on a queue:

  irb
  >> require 'starling'
  => true
  >> starling = Starling.new('127.0.0.1:22122')
  => MemCache: 1 servers, 1 buckets, ns: nil, ro: false
  >> starling.set('my_queue', 12345)
  => nil
  >> starling.get('my_queue')
  => 12345

  # You can do a simple loop over a queue with something like:
  >> loop { puts starling.get('my_queue'); sleep 1 }
  12345
  nil
  nil
  ...

  For more information run the following in a new console:

  'gem server'

  This will start a gem server on http://localhost:8808/ which you can view in your
  browser to see the RDocs for the gem. Or generate rdocs by running the following
  in a new console:

  'rdoc'

Using fiveruns memcache-client

        memcache-client from fiveruns has a couple of fixed added like supporting failover and retry on failure.

        This fork of the memcache-client source is hosted at GitHub and can be found at:

        http://github.com/fiveruns/memcache-client/tree/master

        It can be installed using:

        # THIS COMMAND ONE TIME ONLY
        gem sources -a http://gems.github.com/

        # As often as you like
        sudo gem install fiveruns-memcache-client

Known Issues

  • Starling is "slow" as far as messaging systems are concerned. In practice, it’s fast enough.

TODO

  • Implement memcached instead of memcache as a client interface (to make it faster)

Authors

  • Blaine Cook <romeda@gmail.com>
  • Chris Wanstrath <chris@ozmm.org>
  • AnotherBritt <?>
  • Glenn Rempe <?>
  • Abdul-Rahman Advany <abdulrahman@advany.com>

Copyright

Starling - a light-weight server for reliable distributed message passing. Copyright 2007-2008 Blaine Cook <blaine@twitter.com>, Twitter Inc.