1package Net::RabbitFoot::Cmd::Command::declare_queue; 2 3use Moose; 4extends qw(MooseX::App::Cmd::Command); 5with qw(Net::RabbitFoot::Cmd::Role::Config Net::RabbitFoot::Cmd::Role::Command); 6 7has queue => ( 8 isa => 'Str', 9 is => 'rw', 10 default => '', 11 metaclass => 'MooseX::Getopt::Meta::Attribute', 12 cmd_aliases => 'q', 13 documentation => 'queue name', 14); 15 16has passive => ( 17 isa => 'Bool', 18 is => 'rw', 19 default => 0, 20 metaclass => 'MooseX::Getopt::Meta::Attribute', 21# cmd_aliases => 'p', 22 documentation => 'do not create queue', 23); 24 25has durable => ( 26 isa => 'Bool', 27 is => 'rw', 28 default => 0, 29 metaclass => 'MooseX::Getopt::Meta::Attribute', 30 cmd_aliases => 'd', 31 documentation => 'request a durable queue', 32); 33 34has exclusive => ( 35 isa => 'Bool', 36 is => 'rw', 37 default => 0, 38 metaclass => 'MooseX::Getopt::Meta::Attribute', 39 cmd_aliases => 'e', 40 documentation => 'request an exclusive queue', 41); 42 43has auto_delete => ( 44 isa => 'Bool', 45 is => 'rw', 46 default => 0, 47 metaclass => 'MooseX::Getopt::Meta::Attribute', 48 cmd_aliases => 'a', 49 documentation => 'auto delete queue when unused', 50); 51 52__PACKAGE__->meta->make_immutable; 53no Moose; 54 55sub abstract { 56 return 'declare queue, create if needed'; 57} 58 59sub _validate_queue { 60 my ($self,) = @_; 61 62 return if !$self->queue; 63 $self->_check_queue(); 64 return; 65} 66 67sub _run { 68 my ($self, $client, $opt, $args,) = @_; 69 70 my $method_frame = $client->declare_queue( 71 (map {$_ => $self->$_} qw(queue passive durable exclusive auto_delete)) 72 )->method_frame; 73 74 print 'Declared queue', "\n"; 75 for my $method (qw(queue message_count consumer_count)) { 76 print $method, ': ', $method_frame->$method, "\n"; 77 } 78 return; 79} 80 811; 82 83