X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FStomp.pm;h=5ac0d1df3205dec61720468753cb56ebd85a714b;hb=491ffbb309f6ef16c9fc47112d42c6144c2403c5;hp=e4373615a616bca5c7fed2def435893f18cd8264;hpb=d7c364aac5ffb253fd9db5f3191eca30a1edb8c8;p=catagits%2FCatalyst-Engine-STOMP.git diff --git a/lib/Catalyst/Engine/Stomp.pm b/lib/Catalyst/Engine/Stomp.pm index e437361..5ac0d1d 100644 --- a/lib/Catalyst/Engine/Stomp.pm +++ b/lib/Catalyst/Engine/Stomp.pm @@ -3,6 +3,7 @@ use Moose; use List::MoreUtils qw/ uniq /; use HTTP::Request; use Net::Stomp; +use MooseX::Types::Moose qw/Str Int HashRef/; use namespace::autoclean; extends 'Catalyst::Engine::Embeddable'; @@ -10,7 +11,7 @@ extends 'Catalyst::Engine::Embeddable'; our $VERSION = '0.06'; has connection => (is => 'rw', isa => 'Net::Stomp'); -has conn_desc => (is => 'rw', isa => 'Str'); +has conn_desc => (is => 'rw', isa => Str); =head1 NAME @@ -25,14 +26,15 @@ Catalyst::Engine::Stomp - write message handling apps with Catalyst. require Catalyst::Engine::Stomp; } - MyApp->config->{Engine::Stomp} = - { - hostname => '127.0.0.1', - port => 61613, - subscribe_header => { - transformation => 'jms-to-json', - } - }; + MyApp->config( + 'Engine::Stomp' = { + hostname => '127.0.0.1', + port => 61613, + subscribe_header => { + transformation => 'jms-to-json', + } + }, + ); MyApp->run(); # In a controller, or controller base class: @@ -80,10 +82,10 @@ sub run { # connect up my %template = %{$app->config->{'Engine::Stomp'}}; - my $add_header = delete $template{subscribe_header}; - if (ref($add_header) ne 'HASH') { - $add_header = undef; - } + my $subscribe_headers = $template{subscribe_headers} || {}; + die("subscribe_headers config for Engine::Stomp must be a hashref!\n") + if (ref($subscribe_headers) ne 'HASH'); + $self->connection(Net::Stomp->new(\%template)); $self->connection->connect(); $self->conn_desc($template{hostname}.':'.$template{port}); @@ -91,20 +93,11 @@ sub run { # subscribe, with client ack. foreach my $queue (@queues) { my $queue_name = "/queue/$queue"; - my $header_hash = { + $self->connection->subscribe({ + %$subscribe_headers, destination => $queue_name, ack => 'client', - }; - - # add the additional headers - yes I know it overwrites but - # thats the dev's problem? - if (keys %{$add_header}) { - foreach my $key (keys %{$add_header}) { - $header_hash->{$key} = $add_header->{$key}; - } - } - - $self->connection->subscribe($header_hash); + }); } # enter loop... @@ -223,3 +216,30 @@ Add additional header key/value pairs to the subscribe message sent to the message broker. =cut + +=head1 DEVELOPMENT + +The source to Catalyst::Engine::Stomp is in github: + + http://github.com/chrisa/catalyst-engine-stomp + +=head1 AUTHOR + +Chris Andrews C<< >> + +=head1 CONTRIBUTORS + +Tomas Doran (t0m) C<< >> + +Jason Tang + +=head1 LICENCE AND COPYRIGHT + +Copyright (C) 2009 Venda Ltd + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself, either Perl version 5.8.8 or, +at your option, any later version of Perl 5 you may have available. + +=cut +