В нашем приложении нам нужно импортировать данные транзакции из PayPal через API для пользователей моего приложения и хранить в базе данных. У меня тысячи (около 5 тыс.) Пользователей, и оно растет день ото дня.
Это приложение является службой Windows .net.
Импортирует данные ежечасно для всех пользователей. В настоящее время мы импортируем данные для пользователей один пользователь за другим, но иногда то, что происходит, данные одного пользователя могут быть настолько большими, что для получения всех его данных требуется около 5 часов, поэтому мы блокируем других пользователей до завершения импорта этих пользовательских данных. Этот почасовой импорт для всех остальных пользователей полностью ушел на жеребьевку.
Чтобы избежать этого, мы думали о создании потоков для каждого импорта пользователей и запускали их каждый час, используя службу Windows. Здесь мы имеем ситуацию, когда нам нужно думать о пропускной способности в любой момент времени, так как все потоки будут запускаться одновременно. Это вообще проблема?
Теперь я хочу знать, верна ли наша новая реализация или нет? Также я хочу знать, как это обычно делается? Если кто-то сталкивался с такой функциональностью, пожалуйста, сообщите нам, как это делается.
Если мой вопрос недостаточно ясен, пожалуйста, дайте мне знать, я предоставлю дополнительную информацию.
Редактировать : Если я отправляю так много запросов в Paypal с одного IP, как он обрабатывает это? Есть идеи, ограничивает ли количество запросов на IP?
Обновление: Спасибо за все предложения и отзывы.
Я думал об использовании решения jgauffin, так как оно было идеальной имитацией ThreadPool. Но здесь мне нужны еще некоторые функции, такие как динамическое изменение ограничения потока и рекурсивный вызов метода обратного вызова.
После долгих исследований и анализа пула потоков я решил использовать SmartThreadPool , который сделан на основе логики пула потоков, но с большим количеством функций. Это довольно хорошо и отлично служит моей цели.