Group
Extension

RabbitMQ-Consumer-Batcher/lib/RabbitMQ/Consumer/Batcher/Message.pm

package RabbitMQ::Consumer::Batcher::Message;
use Moose;

use namespace::autoclean;
use Moose::Util::TypeConstraints qw(duck_type);

=head1 NAME

RabbitMQ::Consumer::Batcher::Message - rmq message

=head1 SYNOPSIS

    RabbitMQ::Consumer::Batcher::Message->new(
        header   => $msg->{header},
        body     => $msg->{body},
        deliver  => $msg->{deliver},
        consumer => $consumer,
    );

=head1 DESCRIPTION

=head1 METHODS

=head2 new(%attributes)

=head3 %attributes

=head4 header

=cut

has 'header' => (
    is       => 'ro',
    #bless(
    #    {
    #        'content_type'  => 'application/json',
    #        'priority'      => 1,
    #        'timestamp'     => 1498807603,
    #        'user_id'       => 'guest',
    #        'delivery_mode' => 1,
    #        'headers'       => {
    #            'trials' => '8'
    #        }
    #    },
    #    'Net::AMQP::Protocol::Basic::ContentHeader'
    #);
    isa      => duck_type('interface like Net::AMQP::Protocol::Basic::ContentHeader', [qw(content_type priority timestamp user_id delivery_mode headers)]),
    required => 1,
);

=head4 body

=cut

has 'body' => (
    is       => 'ro',
    isa      => duck_type('interface like Net::AMQP::Frame::Body', [qw(payload)]),
    required => 1,
);

=head4 deliver

=cut

has 'deliver' => (
    is       => 'ro',
    isa      => duck_type('interface like Net::AMQP::Frame::Method', [qw(method_frame)]),
    required => 1,
);

=head4 consumer

=cut

has 'consumer' => (
    is       => 'ro',
    isa      => duck_type('Consumer interface', [qw(ack reject reject_and_republish)]),
    required => 1,
);

=head1 LICENSE

Copyright (C) Avast Software.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 AUTHOR

Jan Seidl E<lt>seidl@avast.comE<gt>

=cut

__PACKAGE__->meta->make_immutable();
1;


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.