activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dejan Bosanac <de...@nighttale.net>
Subject Re: PERL/STOMP: How to Request Response
Date Tue, 08 Sep 2009 13:54:33 GMT
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.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message