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.

