Sometimes we get a bunch of requests from a single client, interspersed with requests from other clients. I was wondering if we could pass in a client id somehow is it possible for the adeptia server to handle queueing in such a way as to prevent starvation for a particular client.
We can setup a JMS queue to handle requests from regular clients and setup a different queue for high value clients.
In Adeptia you can have multiple JMS triggers to kick off same flow and the message that gets sent to which queue can be determined in the flow. Here is a high level design:
Start > Check Requests -> if request is coming from regular clients send to JMS queue 1 > End
-> if request is coming from high value clients send to JMS queue 2 > End
Queue 1 is configured to run in sequence meaning that the messages would be processed in sequence as they arrive.
Queue 2 is configured to trigger the flow in real-time as soon as the message arrives in the queue.
For JMS we can use Apache Active MQ or any other MQ.
Now the throttling can also be governed based on the asynchronous and synchronous type of services. Typically for asynchronous services where the response is not needed immediately the requests can be queued and processed in sequence based on the order they arrive. But for transactional services that are synchronous require real-time processing. We can suggest additional design approaches based on your requirements.