NAME
IPC::Lock::RabbitMQ - Simple and reliable scoped locking for coarse
grained locks.
SYNOPSIS
my $locker1 = IPC::Lock::RabbitMQ->new( mq => $rabbitfoot );
my $locker2 = IPC::Lock::RabbitMQ->new( mq => $rabbitfoot );
{
my $lock = $locker1->lock("foo");
my $false = $locker2->lock("foo");
}
# $lock out of scope here, i.e.
# $lock = undef;
my $new_lock = $locker2->lock("foo");
$new_lock->unlock;
DESCRIPTION
This module uses RabbitMQ to provide locking for coarse grained locks.
The idea being that you want to take a lock to stop duplicate jobs doing
the same work you are doing.
The lock taken whilst your job is running can last quite a while, and
you don't want your lock to be broken by another process if you're still
working. Equally well, if you crash, you want the lock to be freed so
that another process can retry the job.
METHODS
new
Constructs a lock manager object. Supply it with the "mq" parameter
which contains either an instance of AnyEvent::RabbitMQ or
Net::RabbitFoot
lock ($key)
Take a lock named with a specified key. Returns false if the lock is
already held, returns a IPC::Lock::RabbitMQ::Lock object if the lock was
successful.
The lock is unlocked either by latting the IPC::Lock::RabbitMQ::Lock
object go out of scope, or by explicitly calling the unlock method on
it.
AUTHOR
Tomas Doran (t0m) "<bobtfish@bobtfish.net>".
COPYRIGHT & LICENSE
Copyright 2011 the above author(s).
This sofware is free software, and is licensed under the same terms as
perl itself.