I'm building a Spring-Boot API that will serve a system that requires synchronous behavior despite the API doing async operations. I'm not too familiar with threads and I'm thinking this might be the right place to use them. I'm eager to hear some input.
Here are the restraints:
1. API will write to queue when request comes in.
2. The consumer of the queue will write to a database upon successfully completing request.
3. API will continually pool DB to see when request has been satisfied.
4. API responds to client.
The expectation is that the API will field a few hundred requests per minute, but should scale to handle maybe 10,000/minute one day.
This will live in Elastic Beanstalk, so we do get some flexibility with scaling.
One specific question is: Is there a way to take advantage of Java/Spring features to significantly decrease the load on the system, or is Spring capable of managing compute resources itself?