activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nmittal <nmit...@rblt.com>
Subject Re: PERL/STOMP: How to Request Response
Date Tue, 08 Sep 2009 14:17:46 GMT

Dejan, you are right. It started working as soon as I used one connection.
thanks for your help.

NIshant


Dejan Bosanac wrote:
> 
> Hi Nishant,
> 
> just committed a test case that shows that stomp works nice with temp
> destinations
> 
> here it is
> 
>     public void testTempDestination() throws Exception {
> 
>         String frame = "CONNECT\n" + "login: system\n" + "passcode:
> manager\n\n" + Stomp.NULL;
>         stompConnection.sendFrame(frame);
> 
>         frame = stompConnection.receiveFrame();
>         assertTrue(frame.startsWith("CONNECTED"));
> 
>         frame = "SUBSCRIBE\n" + "destination:/temp-queue/" +
> getQueueName()
> + "\n" + "ack:auto\n\n" + Stomp.NULL;
>         stompConnection.sendFrame(frame);
> 
>         frame = "SEND\n" + "destination:/temp-queue/" + getQueueName() +
> "\n\n" + "Hello World" + Stomp.NULL;
>         stompConnection.sendFrame(frame);
> 
>         StompFrame message = stompConnection.receive(1000);
>         assertEquals("Hello World", message.getBody());
>     }
> 
> Can you try using one connection in your client code for starters and see
> if
> it works.
> 
> If you cannot make your stomp implementation to work with temp
> destinations,
> you can use regular queues and selectors as described in this thread
> http://www.nabble.com/Implement-request-response-with-JMS-over-Stomp-td24914033.html
> 
> Cheers
> --
> Dejan Bosanac
> 
> Open Source Integration - http://fusesource.com/
> ActiveMQ in Action - http://www.manning.com/snyder/
> Blog - http://www.nighttale.net
> 
> 
> On Tue, Sep 8, 2009 at 5:22 AM, nmittal <nmittal@rblt.com> wrote:
> 
>>
>> Dejan, Thanks for your reply. I have been trying that... I am trying with
>> 2
>> stomp connections, one that subscribes to '/temp-queue/tq' and one that
>> sends a message to /queue/Queue.Data with reply to as the above
>> temp-queue.
>> my client code is below..
>>
>> my $stomp = Net::Stomp->new( { hostname => "192.168.42.30", port =>
>> '61613'
>> } );
>> $stomp->connect();
>>
>> my $stomp1 = Net::Stomp->new( { hostname => "192.168.42.30", port =>
>> '61613'
>> } );
>> $stomp1->connect();
>> $stomp1->subscribe(
>>      {   destination             => '/temp-queue/tq',
>>          'ack'                   => 'auto',
>>          'activemq.prefetchSize' => 1,
>>      }
>>  );
>>
>> my %head;
>> $head{destination} = '/queue/Queue.Data';
>> $head{"reply-to"} = '/temp-queue/tq';
>>
>> my $frame = Net::Stomp::Frame->new(
>>       { command => "SEND", headers => \%head, body => to_json(\%request)
>> }
>> );
>>
>> $stomp->send_frame($frame);
>>
>> while (1) {
>>    my $frame1 = $stomp1->receive_frame;
>>    my $json1 = $frame1->body;
>>
>>    print "$json1\n";
>> }
>>
>> --------
>>
>> on the server, I subscribe to /queue/Queue.Data and send the reply back
>> on
>> the destination that is in the reply-to header. please see server code
>> below...
>>
>> my $stomp = Net::Stomp->new( { hostname => $broker, port => '61613' } );
>> $stomp->connect();
>> $stomp->subscribe(
>>      {   destination             => '/queue/Queue.Data',
>>          'ack'                   => 'client',
>>          'activemq.prefetchSize' => 1,
>>      }
>>  );
>>
>>
>> while (1) {
>>    my $frame = $stomp->receive_frame;
>>
>>    if (defined($frame->headers->{"reply-to"})) {
>>                my %head;
>>                $head{destination} = $frame->headers->{"reply-to"};
>>
>>                my $frame1= Net::Stomp::Frame->new(
>>               { command => "SEND", headers => \%head, body => "This is
>> the
>> response from server" } );
>>
>>                $stomp->send_frame($frame1);
>>    }
>>
>>    $stomp->ack( { frame => $frame } );
>> }
>> $stomp->disconnect;
>>
>> --
>>
>> I see that the request is being sent and received but the reply never
>> makes
>> it to the client. What am I doing wrong?
>>
>> thanks
>> Nishant
>>
>>
>>
>>
>> Dejan Bosanac wrote:
>> >
>> > Hi,
>> >
>> > use /temp-topic/ or /temp-queue/ prefixes (instead of /topic/ and
>> /queue/)
>> > for destination names and ActiveMQ will create temporary destinations.
>> >
>> > Cheers
>> > --
>> > Dejan Bosanac
>> >
>> > Open Source Integration - http://fusesource.com/
>> > ActiveMQ in Action - http://www.manning.com/snyder/
>> > Blog - http://www.nighttale.net
>> >
>> >
>> > On Mon, Sep 7, 2009 at 3:45 AM, nmittal <nmittal@rblt.com> wrote:
>> >
>> >>
>> >> Hi, I am trying to implement request response with a Perl Client using
>> >> stomp.
>> >> the documentation on the ActiveMQ website has sample code in JAVA that
>> >> created a temporary destination and then sets the replyto header to
>> this
>> >> temp destination.
>> >> How can I create a temporary destination in Perl STOMP client. I am
>> using
>> >> Net::Stomp.
>> >>
>> >> thanks for the help.
>> >>
>> >> Nishant
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/PERL-STOMP%3A-How-to-Request-Response-tp25323954p25323954.html
>> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>> > -----
>> > Dejan Bosanac
>> >
>> > Open Source Integration - http://fusesource.com/
>> > ActiveMQ in Action - http://www.manning.com/snyder/
>> > Blog - http://www.nighttale.net
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/PERL-STOMP%3A-How-to-Request-Response-tp25323954p25339442.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -----
> Dejan Bosanac
> 
> Open Source Integration - http://fusesource.com/
> ActiveMQ in Action - http://www.manning.com/snyder/
> Blog - http://www.nighttale.net
> 

-- 
View this message in context: http://www.nabble.com/PERL-STOMP%3A-How-to-Request-Response-tp25323954p25347139.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message