Prev Next

Integration / ActiveMQ Interview Questions Intermediate

Why should you enable producer flow control?

Producer flow control stops a fast producer from overwhelming the broker or a slow consumer when memory or storage limits on a destination are close to being hit. Instead of letting the broker's memory fill up and eventually error out or crash, ActiveMQ can pause the producer's send() call until space frees up, applying back-pressure at the source of the problem.

This is valuable in systems where producers can generate messages far faster than downstream consumers can process them. Without flow control, unbounded queues quietly grow until the broker runs out of memory or disk, which is a much harder failure to recover from than a temporarily slow producer.

Flow control is configured per destination policy in activemq.xml via producerFlowControl and memoryLimit attributes, so different queues can have different tolerances - a low-priority logging queue might be allowed to block aggressively, while a payments queue might be given a much larger memory budget so it rarely, if ever, throttles.

What does producer flow control do when a destination nears its memory limit?
What problem does flow control prevent?

More Related questions...

Show more question and Answers...


Comments & Discussions