Boris Sukholitko > Queue-Worker-0.01 > Queue::Worker

Download:
Queue-Worker-0.01.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.01   Source  

NAME ^

Queue::Worker - Database based work queue abstraction.

SYNOPSIS ^

    package MyWorker;
    use base 'Queue::Worker';

    sub name { 'my_work'; }

    sub process {
            my ($self, $item) = @_;
            # do your work here
    }
    
    # create worker table in db
    MyWorker->create_table($dbh);

    # and somewhere else
    MyWorker->enqueue($dbh, 'some work order string');

    # and finally to run the queue
    MyWorker->run($dbh);

DESCRIPTION ^

This module provides simple, database queue based, worker abstraction. It provides locking between worker instances using POSIX::RT::Semaphore.

Strings representing work orders are enqueued with enqueue function. Those items are removed from the queue by run function.

METHODS ^

$class->create_table($dbh, $name)

Creates table queue_worker_$name table in the database. $name parameter is optional: if undef name accessor is used.

$class->enqueue($dbh, $msg)

Enqueues work order $msg into the queue.

$class->new

Creates new instance of the worker. Also creates underlying semaphore.

$class->run($dbh)

Runs the queue. Calls process method on each work item.

$class->unlink_semaphore

Unlinks semaphore.

$class->get_semaphore

Returns underlying semaphore.

ABSTRACT METHODS ^

The following methods should be implemented by inherited class.

$class->name

Should return the name of the worker.

$self->process($msg)

Callback to process the work order.

AUTHOR ^

        Boris Sukholitko
        CPAN ID: BOSU
        
        boriss@gmail.com

COPYRIGHT ^

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

SEE ALSO ^

POSIX::RT::Semaphore

syntax highlighting: