AnyMQ-AMQP

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

---
abstract: 'AMQP binding for AnyMQ'
author:
  - 'Chia-liang Kao <clkao@clkao.org>'
build_requires:
  ExtUtils::MakeMaker: 6.42
  Test::More: 0
configure_requires:
  ExtUtils::MakeMaker: 6.42
distribution_type: module
generated_by: 'Module::Install version 1.02'
license: perl

README  view on Meta::CPAN

NAME
    AnyMQ::AMQP - AMQP binding for AnyMQ

SYNOPSIS
      use AnyMQ;
      my $bus = AnyMQ->new_with_traits(traits => ['AMQP'],
                                       host   => 'localhost',
                                       port   => 5672,
                                       user   => 'guest',
                                       pass   => 'guest',
                                       vhost  => '/',
                                       exchange => 'foo',

lib/AnyMQ/AMQP.pm  view on Meta::CPAN


1;
__END__

=encoding utf-8

=for stopwords

=head1 NAME

AnyMQ::AMQP - AMQP binding for AnyMQ

=head1 SYNOPSIS

  use AnyMQ;
  my $bus = AnyMQ->new_with_traits(traits => ['AMQP'],
                                   host   => 'localhost',
                                   port   => 5672,
                                   user   => 'guest',
                                   pass   => 'guest',
                                   vhost  => '/',

lib/AnyMQ/Topic/Trait/AMQP.pm  view on Meta::CPAN

package AnyMQ::Topic::Trait::AMQP;
use Moose::Role;

has publisher_only => (is => "ro", isa => "Bool");

sub BUILD {}; after 'BUILD' => sub {
    my $self = shift;
    return if $self->publisher_only;

    $self->bus->_rf_channel->bind_queue(
        exchange    => $self->bus->exchange,
        queue       => $self->bus->_rf_queue,
        routing_key => $self->name,
        on_success  => $self->bus->cv,
    );
};

before publish => sub {
    my ($self, @events) = @_;
    $self->bus->_rf_channel->publish(

lib/AnyMQ/Topic/Trait/AMQP.pm  view on Meta::CPAN

        header      => { reply_to => $self->bus->_rf_queue },
        body => JSON::to_json($_)
    ) for @events;
};

sub DEMOLISH {}; after 'DEMOLISH' => sub {
    my $self = shift;
    my ($igd) = @_;
    return if $igd;
    return if $self->publisher_only;
    $self->bus->_rf_channel->unbind_queue(
        queue       => $self->bus->_rf_queue,
        routing_key => $self->name,
        on_success  => $self->bus->cv,
    );
};

1;

lib/AnyMQ/Trait/AMQP.pm  view on Meta::CPAN

use Try::Tiny;
use Carp qw(croak carp);

has host => (is => "ro", isa => "Str");
has port => (is => "ro", isa => "Int");
has user => (is => "ro", isa => "Str");
has pass => (is => "ro", isa => "Str");
has vhost => (is => "ro", isa => "Str");
has exchange => (is => "ro", isa => "Str");

has bind_mode => (is => "ro", isa => "Str", default => sub { 'exchange' });

has _rf => (is => "rw");
has _rf_channel => (is => "rw");
has _rf_queue => (is => "rw");

has cv => (is => "rw", isa => "AnyEvent::CondVar");

has on_ready => (is => "rw", isa => "CodeRef");

has _connected => (is => "rw", isa => "Bool");



( run in 0.925 second using v1.01-cache-2.11-cpan-2398b32b56e )