Я ищу несколько сторонних API для сбора информации по поисковому запросу пользователя. Я планирую выделить поток для каждого API, который я хочу использовать, чтобы минимизировать время отклика на моем конце. Я также хочу ограничить количество потоков, которые может запускать мое приложение в любое время из-за проблем с памятью / процессором.
Так как я использую Laravel в качестве своей платформы, я пытался сделать это с помощью очередей Laravel, но, похоже, у меня могут возникнуть проблемы с получением данных ответов из Job.
Это зависит. Очередь заданий и рабочий пул могут быть подходящими, если требуется действительно огромное количество вызовов API, особенно если эти вызовы API могут быть очень медленными. Но я бы постарался избежать всей этой архитектуры, если вы действительно не уверены, что она вам нужна.
Для начала я бы посмотрел на выполнение асинхронных запросов к внешним API и попытался сохранить все это в одном процессе. Клиентская библиотека Guzzle HTTP предоставляет очень удобный для программиста API для выполнения такого рода асинхронных запросов.
Если внешние запросы действительно многочисленны или медленны, вы можете рассмотреть возможность использования очереди. Но в этом случае вы рассматриваете реализацию множества логики для постановки в очередь всех заданий, затем опрашиваете их до тех пор, пока они не будут выполнены (по пути вы получите обратную связь с вашим пользователем), и наконец вернете объединенный результат. Это может оказаться необходимым, но я бы начал с более простой реализации, которую я описал выше.
Других решений пока нет …