[
https://issues.apache.org/jira/browse/QPID-1769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12688422#action_12688422
]
Jeff Stein commented on QPID-1769:
----------------------------------
Here's the qpid-queue-stats program showing that nothing is dequeueing:
Queue Name Sec Depth Enq Rate
Deq Rate
========================================================================================
message_queue 3470.62 0 0.00
0.00
message_queue 10.00 306 30.60
0.00
message_queue 10.00 1599 129.29
0.00
(at 1599 messages , it maxes out)
> 64 kilobyte messages not dequeued immediately when messageConsumer.receive is
> called
> ------------------------------------------------------------------------------------
>
> Key: QPID-1769
> URL: https://issues.apache.org/jira/browse/QPID-1769
> Project: Qpid
> Issue Type: Bug
> Components: Java Client
> Affects Versions: M4
> Environment: Redhat
> Reporter: Jeff Stein
>
> I'm running into a bug where, when I send messages 64 kilobytes long via a
> JMS producer, and retrieve them via a JMS consumer, it appears they are not
> dequeued until much later (even though the consumer is somehow still reading
> the messages). It is probably dequeueing finally when connection.close() or
> ctx.close() is called. I've concluded this is the situation, because:
> (A) The message number that overflows the queue is the same as the queue size
> divided by the message size (i.e., all the messages are still in the queue
> when the overflow happens).
> (B) The qpid-queue-stats program shows no dequeueing occuring.
> (C) When I make a simple consumer to run against the 64k message producer, it
> receives the messages, despite no actual dequeueing occuring in the queue.
> The last thing it does is hang on messageConsumer.receive(), and the read
> messages are never dequeued.
> (D) When I modify the simple consumer from (C) to timeout after 30 seconds
> (messageConsumer.receive(30000)), and it reaches the end of the program by
> timing out, the dequeues occurs all at once suddenly.
> (E) This occurs even when I take it down to about 50 messages per second--no
> dequeueing occurs until after the timeout mentioned in (D).
> This has the effect of causing my queue to fill up. Note that I do not have
> this problem when sending messages that are 32 kilobytes long and
> smaller--messages dequeue normally at those sizes.
> I tried to replicate this behavior in the Python client, but that seemed to
> work without any problems.
> Note that I am running against the C++ broker and my queue size limit is 100
> megabytes.
> -------------------------
> You can see this behavior by modifying the direct Producer/Consumer example
> for JMS like so:
> Modifying the Producer:
> 1) Set numMessages to 2000 instead of 10, so that we reach the queue capacity
> (assuming 100 Megabytes maximum in the queue).
> 2) Add this private method:
> private String makeString(int length) {
> String r = "r";
> for (int i=0;i<length;i++) {
> r+="r";
> }
> return r;
> }
> 3) Add this line to the first line of the runTest() function:
> String bigString = makeString(65536);
> 4) Change this line in the runTest() function...
> message = session.createTextMessage("Message " + i);
> ...to this:
> message = session.createTextMessage("Message " + i + bigString);
> Modifying the Consumer:
> 1) Change this line in runTest()...
> System.out.println(CLASS + ": Received message: " + text);
> ...to this:
> System.out.println(CLASS + ": Received message: " + text.substring(0,20));
> This last step is so that your console output doesn't get flooded with those
> "r" characters that compose most of the message.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]