AMQP
view release on metacpan or search on metacpan
lib/AMQP.pm view on Meta::CPAN
(?<password>[^@]+)@
(?<hostname>[^:\/]+):
(?<port>\d+)\/
(?<vhost>[^\/]*)
/x;
$self->host($+{'hostname'} || 'localhost');
$self->port($+{'port'} || 5672);
$self->vhost($+{'vhost'} || '/');
$self->username($+{'username'} || 'guest');
$self->password($+{'password'} || 'guest');
say "amqp://" . $self->host . ":" . $self->port . $self->vhost if $self->debug;
$self;
}
1;
__DATA__
=pod
=head1 NAME
lib/AMQP/Publisher.pm view on Meta::CPAN
package AMQP::Publisher;
our $VERSION = '0.01';
use Mojo::Base 'AMQP';
use AnyEvent::RabbitMQ;
use Sys::Hostname;
has 'debug' => 1;
has 'host' => 'localhost';
has 'port' => 5672;
has 'user' => 'guest';
has 'password' => 'guest';
has 'vhost' => '/';
has 'timeout' => 1;
has 'heartbeat' => 30;
has 'exchange' => 'log';
has 'type' => 'topic';
has 'key' => '#';
lib/AMQP/Publisher.pm view on Meta::CPAN
$self->rabbit->load_xml_spec();
$self->rabbit->connect(
host => $self->host,
port => $self->port,
user => $self->user,
pass => $self->password,
vhost => $self->vhost,
timeout => $self->timeout,
tune => { heartbeat => $self->heartbeat },
on_success => sub {
say "Connected to amqp://" . $self->host . ":" . $self->port . $self->vhost if $self->debug;
$self->connection(shift);
$self->connection->open_channel(
on_failure => $self->status,
on_close => sub {
say "Channel closed" if $self->debug;
$self->status->send;
},
on_success => sub {
say "Opened channel" if $self->debug;
$self->channel(shift);
$self->on_connect->($self);
},
);
},
on_failure => $self->status,
on_read_failure => sub {
say "Failed to read" if $self->debug;
$self->status->send;
},
on_return => sub {
say "Failed to send" if $self->debug;
$self->status->send;
},
on_close => sub {
say "Connection closed" if $self->debug;
$self->status->send;
}
);
$self->status->recv;
}
sub send {
my ($self,$message) = @_;
$self->channel->send($message);
}
lib/AMQP/Subscriber.pm view on Meta::CPAN
package AMQP::Subscriber;
our $VERSION = '0.01';
use Mojo::Base 'AMQP';
use AnyEvent::RabbitMQ;
use Sys::Hostname;
has 'debug' => 1;
has 'host' => 'localhost';
has 'port' => 5672;
has 'username' => 'guest';
has 'password' => 'guest';
has 'vhost' => '/';
has 'timeout' => 1;
has 'heartbeat' => 30;
has 'exchange' => 'test';
has 'type' => 'topic';
has 'key' => '#';
lib/AMQP/Subscriber.pm view on Meta::CPAN
$self->rabbit->load_xml_spec();
$self->rabbit->connect(
host => $self->host,
port => $self->port,
username => $self->username,
pass => $self->password,
vhost => $self->vhost,
timeout => $self->timeout,
tune => { heartbeat => $self->heartbeat },
on_success => sub {
say "Connected to amqp://" . $self->host . ":" . $self->port . $self->vhost if $self->debug;
$self->connection(shift);
$self->connection->open_channel(
on_failure => $self->status,
on_close => sub {
say "Channel closed" if $self->debug;
$self->status->send;
},
on_success => sub {
say "Opened channel" if $self->debug;
$self->channel(shift);
$self->channel->declare_exchange(
exchange => $self->exchange,
type => $self->type,
auto_delete => 1,
on_failure => $self->status,
on_success => sub {
say "Declared exchange " . $self->exchange if $self->debug;
$self->channel->declare_queue(
queue => $self->queue,
auto_delete => 1,
on_failure => $self->status,
on_success => sub {
say "Declared queue " . $self->queue if $self->debug;
$self->channel->bind_queue(
queue => $self->queue,
exchange => $self->exchange,
routing_key => $self->key,
on_failure => $self->status,
on_success => sub {
say "Bound " . $self->queue . " to " . $self->exchange . " " . $self->key if $self->debug;
$self->channel->consume(
consumer_tag => $self->tag,
on_success => sub {
say 'Consuming from ' . $self->queue if $self->debug;
},
on_consume => sub {
my $msg = shift;
$self->on_message->($self,$msg);
},
on_cancel => sub {
say "Consumption canceled" if $self->debug;
$self->status->send;
},
on_failure => $self->status,
);
}
);
}
);
}
);
},
);
},
on_failure => $self->status,
on_read_failure => sub {
say "Failed to read" if $self->debug;
$self->status->send;
},
on_return => sub {
say "Failed to send" if $self->debug;
$self->status->send;
},
on_close => sub {
say "Connection closed" if $self->debug;
$self->status->send;
}
);
$self->status->recv;
}
1;
__END__
( run in 0.924 second using v1.01-cache-2.11-cpan-49f99fa48dc )