Задать вопрос
@d99999

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

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

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

Если же перед ответом дожидаться пока пройдет 5 секунд, то такая система быстро захлебнется при наплыве запросов и будут исчерпаны ресурсы. Поэтому RPC не рассматриваю как подходящий вариант работы.
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
С помощью RabbitMQ и выполнить. Просто создать очередь, в которую множество клиентов будут отправлять задания, а один потребитель будет из очереди задания читать и выполнять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы