Hello Qpid experts,

Currently we want to use flow control feature in our project for one of the 
client program produced too many events in a short time, or called event flood. 
Messages which may be very vital for the customers will be lost so we want to 
find a way to slow down incoming publications. Then we noticed the flow 
control, it seems that the client will throttle itself per qpid doc: 
http://qpid.apache.org/releases/qpid-0.30/cpp-broker/book/producer-flow-control.html.
 

However, after I did more experiments on this, the result seems to be tricky.

Assume there is only one broker and one normal queue that I add by using 
qpid-config, everything behaviors just like what that qpid doc told us. At this 
time client(producer) will be blocked when this normal queue is up to the 
bottle neck. When I add one more broker and create an exchange route between 
them, it seems to be more complex with regard to flow control issue.

Broker A(bridge_queue_a) ------Broker B (queue_b, bridge)

Suppose broker B has a normal queue named “queue_b” (limited by 100 bytes and 
flow stop threshold is 50 bytes) and broker A has a bridge queue named 
“bridge_queue_a”(also limited by 100 bytes).  Using a client called “c” to send 
out some messages (10 bytes each), we can see queue_b will set the flow stop 
flag as true after 5 messages are sent from client c. when we want to send 
another 5 messages, client c will throw an warning exception thus the process 
will exit abnormally. Intriguingly,  bridge_queue_a is deleted in a heartbeat 
and soon after that create a new one, so bridge_queue_a will never meet flow 
stop problem. It seems a defeat, from our standpoint.

So my question is, does it considered as a normal behavior? Or does I make any 
mistake /misunderstanding from that? 

By the way, the version of the qpidd I use is 0.22 and the client uses qpid 
messaging.

Thanks,
Kyrie

Reply via email to