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 )