Daemonise
view release on metacpan or search on metacpan
examples/tatort.rabbit view on Meta::CPAN
#!/usr/bin/env perl
use Modern::Perl;
use experimental 'smartmatch';
use Daemonise;
use Getopt::Long;
# PODNAME: tatort.rabbit
my $pid;
my $debug;
my $conf = '/etc/daemonise/bunny.conf';
my $foreground;
our $AUTOLOAD;
GetOptions(
"debug|d" => \$debug,
"config|c=s" => \$conf,
"pidfile|p=s" => \$pid,
"foreground|f" => \$foreground,
) or die;
my $d = Daemonise->new();
$d->debug(1) if $debug;
$d->debug(1) if ($d->hostname =~ m/devel/);
$d->foreground(1) if $foreground;
$d->pid_file($pid) if $pid;
$d->config_file($conf);
$d->configure;
$d->load_plugin('CouchDB');
$d->load_plugin('JobQueue');
$d->load_plugin('HipChat');
$d->load_plugin('Riemann');
$d->is_worker(1);
$d->dont_log_worker;
$d->couch_db($d->config->{events}->{db});
$d->hooks({
event_add => sub {
my ($msg) = @_;
my $event = event_add($msg);
return $msg unless $event;
event_exec($event);
return $msg;
},
event_exec => sub { event_exec($_[0]->{data}->{options}) },
events_trigger => \&events_trigger,
});
$d->start;
sub events_trigger {
my ($msg) = @_;
my @events = _pending_events($msg);
foreach my $event (@events) {
my $frame = {
data => {
command => "event_exec",
options => $event,
},
};
( run in 2.875 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )