why does SwiftMQ show flow control behaviour even when flow control is disabled?

Viewed 47

I'm trying to benchmark the performance of swiftMQ 5.0.0 with producer and consumer application I wrote so that I can vary the number of producer threads and consumer threads. I have added a delay on the consumer to simulate the time taken to process a message. I have run a test by setting the producer threads fixed at 2, and by varying the number of consumer threads from 20 to 92 in steps of 4.

Initially, the producer rate starts high and consumer rate is low (as expected due to the delay added and less number of consumer threads).

As the number of consumer threads increase, the producer rate drops and consumer rate increases and they become equal at around 48 consumer threads.

After that, as the number of consumer threads further increase, both producer and consumer rates keep increasing linearly. I am wandering what the reason for this behavior is?

see this image for the result graph

Notes:

  • I have disabled flow control at queue level by setting flowcontrol-start-queuesize="-1" .
  • I also have not set a value to inbound-flow-control-enabled in routing swiftlet. (I believe it defaults to false)

Any help on this matter is much appreciated. TIA

0 Answers
Related