Можно ли с помощью rabbitMQ можно ли создать очередь в которой для каждого пользователя последовательно будет выполнятся запрос на другой сайт?



@d99999

Есть задача общаться к АПИ другого сайта не чаще чем раз в 5 сек. Пользователей может быть много.
Отсюда появляется необходимость создать очередь(как в реальной жизни). И дать возможность пользователям обращатся к другому сайту по очереди?

Как это лучше выполнить и что для того лучше всего использовать?


Решения вопроса 0


Ответы на вопрос 2



@2ord

Если ответ клиенту на его запрос выдается не сразу, а с задержкой в связи с ограничениями из-за API третьей стороны, то логично ввести систему заявок. При запросе регистрируют заявку клиента, заносят данные в СУБД, кладут в очередь и сразу выдается ответ с номером заявки и ожидаемым временем готовности. Когда обработчик очереди берет задачу с учетом задержки 5 секунд, получает ответ от API и заносит ответ в готовой для последующего чтения форме в СУБД для соответствующего номера заявки. Независимо от обработчика очереди, клиенты обращаются за получением готовых результатов. И если таковые готовы (проверка по колонке в таблице), выдается ответ. Если еще не готов, выдается следующее ожидаемое окно времени. И т.д., до лимита проверок.

Если же перед ответом дожидаться пока пройдет 5 секунд, то такая система быстро захлебнется при наплыве запросов и будут исчерпаны ресурсы. Поэтому RPC не рассматриваю как подходящий вариант работы.



@sergey-gornostaev

С помощью RabbitMQ и выполнить. Просто создать очередь, в которую множество клиентов будут отправлять задания, а один потребитель будет из очереди задания читать и выполнять.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *