Hi, We have written a wrapper around and internally it is using using timeout feature. What version of Active MQ are you using?
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; } mjustin wrote: > > I don't know the PHP Stomp client very well (but a Delphi implementation). > > $stomp->read() seems to return immediately without waiting for the next > message. > There might be a different method $stomp->read(receivetimeout), which > waits for the given time (in milliseconds) before it gives up. > > Michael > > > RakeshRay 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.-tp24296039p24306748.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.