activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin Bertram <jbert...@redhat.com>
Subject Re: Last-Value Queues
Date Fri, 28 Jul 2017 02:13:53 GMT
I believe this is a side-effect of message buffering for consumers.  Once
the consumer is created and you invoke javax.jms.Connection.start() then
the consumer will start fetching messages from the broker to put into it's
local buffer (even before javax.jms.Consumer.receive() is invoked).
Because of this the 4th message isn't actually on the queue when the 5th
message arrives.  If you set invoke javax.jms.Connection.stop() before
sending the 4th and 5th messages and then javax.jms.Connection.start()
before the last javax.jms.Consumer.receive() you'll get the 5th message.


Justin

On Thu, Jul 27, 2017 at 8:00 PM, Joseph North <joernorth@gmail.com> wrote:

> I was modifying Artemis' last-value queue example and saw some unexpected
> behavior (gist of the code I'm working with:
> https://gist.github.com/jrnorth/3040ffc8755be66c0c3ca39285e602b9).
>
> In this example, I sent a 4th and 5th message to exampleQueue after
> receiving the sole message on the queue (the 3rd message). Then I receive
> another message from the queue, but it's the 4th message. Since this is a
> last-value queue, shouldn't I have received the 5th message?
>
> I'm using Artemis 2.1.
>
> Thanks,
>
> Joe
>

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