NAME
Deeme::Worker - represent a Deeme worker that process jobs
SYNOPSIS
package JobQueue;
use Deeme::Obj 'Deeme::Worker';
use Deeme::Backend::Mango;
# app1.pl
package main;
# Subscribe to events in an application (thread, fork, whatever)
my $worker_tiger = JobQueue->new(backend=> Deeme::Backend::Mango->new(...) ); #or you can just do Deeme->new
$worker_tiger->add(roar => sub {
my ($worker_tiger, $times) = @_;
say 'RAWR!' for 1 .. $times;
});
...
#then, later in another application
# app2.pl
my $worker_tiger = JobQueue->new(backend=> Deeme::Backend::Mango->new(...));
while(my $Job=$worker_tiger->dequeue("roar")){
$Job->process(@args);
}
...
#or
my $worker_tiger = JobQueue->new(backend=> Deeme::Backend::Mango->new(...));
while($worker_tiger->dequeue("roar")){
$worker_tiger->process(@args);
}
#or
$worker_tiger->dequeue_events("roar");
$worker_tiger->process_all(1);
DESCRIPTION
Deeme is a database-agnostic driven event emitter base-class. Deeme::Worker allows you to use deem to act also like a jobqueue.
EVENTS
Deeme::Worker inherits all events from Deeme
METHODS
Deeme::Worker inherits all methods from Deeme and implements the following new ones.
add
$e = $e->add(test1=> sub {...});
Subscribe to "test1" jobqueue.
jobs
$n = $e->jobs('test1');
Returns the number of jobs in the queue
dequeue
$Job = $e->dequeue('test1');
Dequeue a job from the "test1" jobqueue, can be accessible also calling $e-
process(@args)>, it has the same effect calling $job-
process(@args)> after the dequeuing.
dequeue_event
@Jobs = $e->dequeue_event('test1');
Dequeue all jobs from the "test1" jobqueue;
process
$return=$e->process('foo'); #if already dequeued
$return=$Job->process('foo', 123);
Execute job with provided args.
process_all
my @returns=$e->process_all('foo',1,2);
Process all dequeued jobs with provided args and return an array of return values(corrisponding to the jobs).
DEBUGGING
You can set the DEEME_DEBUG
environment variable to get some advanced diagnostics information printed to STDERR
.
DEEME_DEBUG=1
AUTHOR
mudler <mudler@dark-lab.net>
COPYRIGHT
Copyright 2014- mudler
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
Deeme, Deeme::Backend::Mango, Deeme::Backend::Meerkat, Deeme::Backend::Memory, Mojo::EventEmitter, Mojolicious