KafkaDataConsumer contains its own logic for caching InternalKafkaConsumer which looks like can be simplified via applying Apache Commons Pool. Benefits of applying Apache Commons Pool are following:
- We can get rid of synchronization of KafkaDataConsumer object while acquiring and returning InternalKafkaConsumer.
- We can extract the feature of object pool to outside of the class, so that the behaviors of the pool can be tested easily. Now it doesn't have detailed tests and only covers reported issues.
- We can get various statistics for the object pool, and also be able to enable JMX for the pool.