Queue::Beanstalk - Client library for the beanstalkd server
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.
Client library for Beanstalk. Read more about the Beanstalkd daemon at
http://xph.us/software/beanstalkd/
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.
put
delete
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.
$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.
$jobs->delete();
Delete the current reserved job. Removes the job from the queue as the job is finished.
Håkon Nessjøen, Loopback Systems AS, <lunatic@cpan.org>
Copyright (c) 2007 by Loopback Systems AS
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in 'Håkon'. Assuming CP1252
To install Queue::Beanstalk, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Queue::Beanstalk
CPAN shell
perl -MCPAN -e shell install Queue::Beanstalk
For more information on module installation, please visit the detailed CPAN module installation guide.