Hi,
I'm currently writing a quick performance demo and I wanted to see how QPID 
handled producer flow control.
I'm using the C++ broker with the JMS client and the JMS client seems to ignore 
flow control. 

I have a queue configured using 

qpid-config add queue noc-large-fc-queue --durable --max-queue-count=1000 
--flow-stop-count=800 --flow-resume-count=100 --limit-policy=flow-to-disk 
--file-size=40 --file-count=40

and I use the java spout example to add messages to the queue 

java -cp .:lib/* org.apache.qpid.example.Spout -c 50000 --content=teteetetet 
noc-large-fc-queue

I also use the java drain example to drain the Q.

However when I run the spout command I eventually get the exception

Exception in thread "main" javax.jms.JMSException: Error closing session: 
org.apache.qpid.AMQException: timed out waiting for sync: complete = 0, point = 
50001 [error code 541: internal error]
        at org.apache.qpid.client.AMQSession.close(AMQSession.java:761)
        at org.apache.qpid.client.AMQSession.close(AMQSession.java:723)
        at org.apache.qpid.client.AMQSession.close(AMQSession.java:569)
        at org.apache.qpid.example.Spout.<init>(Spout.java:104)
        at org.apache.qpid.example.Spout.main(Spout.java:147)
Caused by: org.apache.qpid.AMQException: timed out waiting for sync: complete = 
0, point = 50001 [error code 541: internal error]
        at 
org.apache.qpid.client.AMQSession_0_10.setCurrentException(AMQSession_0_10.java:1054)
        at 
org.apache.qpid.client.AMQSession_0_10.sendClose(AMQSession_0_10.java:406)
        at org.apache.qpid.client.AMQSession.close(AMQSession.java:755)
        ... 4 more

and I notice that the qpid log files contain the lines
2012-06-17 17:24:45 info Threshold event triggered for noc-large-fc-queue, 
count=800, size=8000
2012-06-17 17:24:45 info Queue "noc-large-fc-queue": has reached 800 enqueued 
messages. Producer flow control activated.
2012-06-17 17:24:45 info Queue message count exceeded policy for 
noc-large-fc-queue

At no stage does the JMS spout output pause as if it were limited by flow 
control.

However when I try this with the python versions of spout/drain I can see spout 
pause when flow control is enabled and I see multiple occurrences of 

2012-06-17 17:30:35 info Threshold event triggered for noc-large-fc-queue, 
count=800, size=0
2012-06-17 17:30:35 info Threshold event triggered for noc-large-fc-queue, 
count=800, size=0
2012-06-17 17:30:35 info Queue "noc-large-fc-queue": has reached 800 enqueued 
messages. Producer flow control activated.
2012-06-17 17:30:37 info Queue "noc-large-fc-queue": has drained below the flow 
control resume level. Producer flow control deactivated.

Does the JMS client support flow control in 0.16 ? or am I missing some obvious 
?

regards
Noel





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to