I'm happy to announce the release of beanstalkd 0.5.

This is the very first public release. In the future I'll confine
release announcements to the beanstalk mailing list.


WHAT IS BEANSTALKD?
-------------------

Beanstalkd is a fast, distributed, in-memory workqueue service. Its
interface is generic, but is intended for use in reducing the latency
of page views in high-volume web applications by running most
time-consuming tasks asynchronously.

Philotic, Inc. developed beanstalkd to improve the response time for
the Causes on Facebook (http://apps.facebook.com/causes/) application
(with over 9.5 million users). Beanstalkd drastically decreased the
average response time for the most common pages to a tiny fraction of
the original and dramatically improved the user experience.

Stay tuned for a Rails plugin called Async Observer that will make
using beanstalk in your Rails project a snap!


OUR FEW URLS
------------

Download the 0.5 tarball and learn all about beanstalk:
http://xph.us/software/beanstalkd/

Talk about beanstalk development or use at:
http://groups.google.com/group/beanstalk-talk


HOW TO RUN IT
-------------

First, run beanstalkd on two or three machines. There is no
configuration file and only a handful of command-line options.

  $ ./beanstalkd -d -l 10.0.1.5 -p 11300

This starts up beanstalkd as a daemon listening on address 10.0.1.5,
port 11300. If you want to spy on what beanstalkd is doing, recompile
it in debug mode.


HOW TO USE IT
-------------

Here's an example in Ruby. First, have one process put a job into the
queue:


  beanstalk = Beanstalk::Pool(['localhost:11300'])
  ...
  beanstalk.put('hello')


Then start another process to take jobs out of the queue and run them:


  beanstalk = Beanstalk::Pool(['localhost:11300'])
  loop do
    j = beanstalk.reserve
    puts j.body # prints "hello"
    j.delete
  end


DEPENDENCY
----------

Beanstalkd requires libevent. It was developed with libevent 1.3b, but
it may work with other versions.

http://monkey.org/~provos/libevent/


KNOWN BUGS
----------

 * The min heap data structure is not dynamically-sized. This means a
   fixed hard limit on the number of ready jobs (by default set to
   around 16 million).

 * The policy of signalling errors by closing the connection is wrong.
   The server should send a helpful error response whenever possible
   and only close the connection as a last resort.


kr

Reply via email to