Queue::Beanstalk - Client library for the beanstalkd server


Queue-Beanstalk documentation  | view source Contained in the Queue-Beanstalk distribution.

Index


NAME

Top

Queue::Beanstalk - Client library for the beanstalkd server

SYNOPSIS

Top

Producer example:

  use Queue::Beanstalk;

  $jobs = Queue::Beanstalk->new(
                                 'servers' =>  [ '127.0.0.1:11300' ],
                                 'connect_timeout' => 2,
  );

  # Adds a job with priority 4294967295 and 0 delay  
  $jobs->put('do:something');

  # Adds a job with 0 (highest) priority and 1 second delay
  $jobs->put(('do:somethingelse', 0, 1);

Worker example:

  use Queue::Beanstalk;

  $jobs = Queue::Beanstalk->new(
                                 'servers' =>  [ '127.0.0.1:11300' ],
                                 'connect_timeout' => 2,
  );

  while (1) {
    my $data;

    if ($data = $jobs->reserve()) {

      if (do_something($data)) {
        $jobs->delete();  # done with the job
      } else {
        $jobs->release(); # i failed, let someone else take it
      }
      $jobs->next_server(); # optional, if you have several servers

    }

    sleep(1); # prevent cpu intensive loop (just in case)
  }

WARNING! This module is marked as being in the alpha stage, and is therefore subject to change in near future. This version of Queue::Beanstalk currently supports the 0.6 protocol version of Beanstalkd.

DESCRIPTION

Top

Client library for Beanstalk. Read more about the Beanstalkd daemon at

  http://xph.us/software/beanstalkd/

CONSTRUCTOR

Top

new

Has the following hashref options:

servers

An arrayref of servers that can be connected to. Must be in the host:port format. By default the module wil randomly select a server to connect to. You can change this behaviour with the random_servers option.

random_servers

If given a false value, the module will follow the order of the servers array and select the next server in the list on subsequent calls to next_server(); When using this module as a 'producer', it is best to leave the default value of true, so the clients will randomly connect to one of your beantalkd servers.

auto_next_server

Will automatically go to the next or a random server after a successful put or delete. Default value is false.

report_errors

When given a false value, the module will not give any errormessages out loud. And will only exit the functions with an undefined value, the corresponding error-messages however will be found in the 'errstr' variable of the object.

connect_timeout

Amount of seconds to wait for a connection to go through. Default is 0.25 second.

select_timeout

Amount of seconds to wait for a socket to have data available. Default is 1 second.

reserve_timeout

Amount of seconds to wait for an available job to reserve. Default is 10 seconds.

METHODS

Top

put

$jobs->put($job_data[, $priority, $delay])

Insert a job into the queue. Priority is an integer between 0 (highest) and 4294967295 (lowest). Default priority is 4294967295. Default delay is 0.

Returns an undefined value on errors, 'inserted' or 'burried'.

stats

$jobs->stats();

Returns YAML stats output from beanstalkd. TODO: Parse yaml and return hashref.

reserve

$jobs->reserve();

Returns undef on failure/timeout, or full job-data if successful. You have 120 seconds to fullfil the job, before beanstalkd gives up on you.

release

$jobs->release([$priority, $delay]);

Release the current reserved job. The default is to use the same priority as the job had, and 0 second delay.

delete

$jobs->delete();

Delete the current reserved job. Removes the job from the queue as the job is finished.

AUTHOR

Top

Håkon Nessjøen, Loopback Systems AS, <lunatic@cpan.org>

COPYRIGHT AND LICENSE

Top


Queue-Beanstalk documentation  | view source Contained in the Queue-Beanstalk distribution.