Tomas Doran > IPC-Lock-RabbitMQ-0.007 > IPC::Lock::RabbitMQ

Download:
IPC-Lock-RabbitMQ-0.007.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.007   Source  

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.

syntax highlighting: