что произойдет, если вместо этого служба искателя будет синхронно вызывать эти 2 службы?
Первый момент - тогда медленная служба станет узким местом для искателя. Синхронный вызов означает, что сканер должен дождаться обработки запроса сервисом. В случае очереди сканер будет работать быстрее, обрабатывая новые ссылки и не ожидая других сервисов. Можно предположить, что сканер может иметь свою собственную внутреннюю очередь.
Второй момент - долговечность. Возможно, это не так важно, если одна или несколько ссылок будут потеряны, если какая-либо из служб выйдет из строя и не сможет обработать запрос от сканера. Но очереди могут быть долговечными, сохраняя состояние на диске, восстанавливая его работу в том месте, где он был остановлен. Это может быть очень полезно, если все службы будут go отключены одновременно, и многие ссылки будут потеряны.
то, что мне пришло в качестве возможной причины, это просто более сложное управление потоком, если один из них терпит неудачу
Этот подход не гибкий. Обычно вы можете добавлять столько новых служб, сколько хотите, чтобы легко масштабировать рабочую нагрузку без каких-либо изменений в коде. Таким образом, «управление потоком» не должно существовать как код, который требует модификации каждый раз, когда вы добавляете или удаляете экземпляры службы. В реальных приложениях, которые могут увеличиваться и уменьшаться, все эти действия выполняются автоматически без повторного развертывания приложения.