Hi, Hoover.
We have written a wrapper around and internally it is using receive_frame()...Here is the wrapper code.
sub read {
my ($self) = @_;
# after reading, we also need to acknoledge the read, but keep them both as part of the same transaction
# still need to define a way of signalling errors vs nothing to read
return unless $self->{stomp}->can_read({ timeout => '5' });
my $frame = $self->{stomp}->receive_frame;
return unless $frame;
my $msg = $frame->body;
my $msgid = $frame->headers->{'message-id'};
# sending an ACK with the message id and a transaction makes the read part of the transaction
$frame = Net::Stomp::Frame->new( {
command => 'ACK',
headers => { transaction => $self->_tran(), 'message-id' => $msgid },
} );
$self->{stomp}->send_frame($frame);
return $msg;
}
Roger Hoover wrote:
Maybe you meant to call $stomp->receive_frame() in the while loop instead?
On Wed, Jul 1, 2009 at 1:15 PM, RakeshRay <Rakesh.Ray@proquest.com> wrote:
>
> Just installed Active MQ 5.2.
> Using Stomp, inserted 5000 msgs and try to read the same with
> while ( my $msg = $stomp->read() ) {
> $stomp->commit();
> print $msg.$/;
> }
> It leaves 2 messages in the queue, just reads 4998 and comes out.
>
> Any suggestions?
> --
> View this message in context:
>
http://www.nabble.com/Queue-does-not-drain-completely.-tp24296039p24296039.html> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>