@lakshmi-kannan Thanks for this comment. Here are some of my findings:
1. Async producer has only one thread doing the job of dequeueing from a queue of messages and sending it to Kafka, after reaching batch size.
2. It will grab a producer from the pool which maintains a mapping of one producer/broker.
3. But this entire process of dequeueing and sending happens only that single Producer thread so there is no parallelism involved.
4. So maintaining a pool of producer objects is like maintaing a pool of producer threads.