There are external resources (accessing available inventories through an API) that can only be accessed one thread at a time.
My problems are:
- NodeJS server handles requests concurrently, we might have multiple requests at the same time trying to reserve inventories.
- If I hit the inventory API concurrently, then it will return duplicate available inventories
- Therefore, I need to make sure that I am hitting the inventory API one thread at a time
- There is no way for me to change the inventory API (legacy), therefore I must find a way to synchronize my nodejs server.
Note:
- There is only one nodejs server, running one process, so I only need to synchronize the requests within that server
- Low traffic server running on express.js
I'd use something like the async module's queue and set its
concurrency
parameter to1
. That way, you can put as many tasks in the queue as you need to run, but they'll only run one at a time.The queue would look something like:
Then, to make an inventory API request, you'd do something like: