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) "". COPYRIGHT & LICENSE Copyright 2011 the above author(s). This sofware is free software, and is licensed under the same terms as perl itself.