NAME

Queue::Gearman - Queue like low-level interface for Gearman.

SYNOPSIS

use Queue::Gearman;
use JSON;

sub add {
    my $args = shift;
    return $args->{left} + $args->{rigth};
}

my $queue = Queue::Gearman->new(
    servers            => ['127.0.0.1:6667'],
    serialize_method   => \&JSON::encode_json,
    deserialize_method => \&JSON::decode_json,
);
$queue->can_do('add');

my $task = $queue->enqueue_forground(add => { left => 1, rigth => 2 })
    or die 'failure';
$queue->enqueue_background(add => { left => 2, rigth => 1 })
    or die 'failure';

my $job = $queue->dequeue();
if ($job && $job->func eq 'add') {
    my $res = eval { add($job->arg) };
    if (my $e = $@) {
        $job->fail($e);
    }
    else {
        $job->complete($res);
    }
}

$task->wait();
print $task->result, "\n"; ## => 3

DESCRIPTION

Queue::Gearman is ...

LICENSE

Copyright (C) karupanerura.

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

AUTHOR

karupanerura <karupa@cpan.org>