Я не могу найти лучший подход для объединения вызовов API на основе размера очереди или выполнения в течение 4 секунд после того, как самый старый элемент был вставлен в очередь. Ниже приведено описание проблемы:
Описание проблемы:
Чтобы предотвратить перегрузку API-интерфейсов вызовами запросов, я хотел бы объединить вызовы для каждой конечной точки API.
Все входящие запросы для каждого отдельного API должны храниться в очереди и пересылаться в API, как только будет достигнуто ограничение в 4 вызова для отдельного API. Если достигнуто ограничение для определенного c API, будет отправлен один запрос с использованием параметра q со значениями, разделенными запятыми. Из-за этого вызывающий абонент не получит ответа на свои запросы, если не будет достигнут предел очереди для определенной службы c. Чтобы решить эту проблему, я хочу, чтобы очереди обслуживания также отправлялись в течение 4 секунд после того, как самый старый элемент был вставлен в очередь.
Example :
GET http://<host>:8080/products?q=190763,190764
200 OK
content-type: application/json
{
"190763": 140.00
"190764": 250.00
}
If there is a caller querying API and the queue of the Products API holds 4
requests, the next request to the Products API will trigger the actual bulk
request to be made. Each API will have its own queue.
Я использую Spring Boot. Я попытался использовать CompletableFuture вместе со службой исполнителя, но не смог решить эту проблему. Любая помощь будет принята с благодарностью.