๐ Concurrent Processing
Execute multiple HTTP requests in parallel with controlled concurrency for maximum performance
Parallel Requests Demo
Fetch multiple jokes concurrently and see the time savings compared to sequential requests
๐ Performance Comparison
| Execution Method | 5 Requests | 10 Requests | Benefit |
|---|---|---|---|
| Sequential (One at a time) | ~1000ms | ~2000ms | - |
| Concurrent (Parallel) | ~250ms | ~400ms | 75-80% faster! ๐ |
Actual times may vary based on network latency and API response times
๐ Code Example
Using Task.WhenAll for Concurrent Requests
// Define categories to fetch
var categories = new[] { "Programming", "Misc", "Dark", "Pun", "Spooky" };
// Create tasks for each request
var tasks = categories.Select(category =>
{
var request = new HttpRequestResult<JokeResponse>
{
RequestPath = $"https://v2.jokeapi.dev/joke/{category}?safe-mode",
RequestMethod = HttpMethod.Get
};
return _requestResultService.HttpSendRequestResultAsync(request);
}).ToList();
// Execute all requests concurrently
var stopwatch = Stopwatch.StartNew();
var results = await Task.WhenAll(tasks);
stopwatch.Stop();
// Process results
var jokes = results
.Where(r => r.IsSuccessStatusCode)
.Select(r => r.ResponseResults)
.ToList();
Console.WriteLine($"Fetched {jokes.Count} jokes in {stopwatch.ElapsedMilliseconds}ms");
Console.WriteLine($"Average time per request: {results.Average(r => r.RequestDurationMilliseconds)}ms");
Best Practices for Concurrent Requests
โ Do
- Use for independent requests
- Set appropriate timeouts
- Handle partial failures gracefully
- Monitor resource usage
- Use cancellation tokens
โ Don't
- Overwhelm the target API
- Ignore rate limits
- Use for dependent requests
- Forget error handling
- Ignore memory constraints
๐ฏ Common Use Cases
Perfect For:
- Aggregating data from multiple APIs
- Batch processing operations
- Loading dashboard widgets
- Parallel validation checks
- Multi-source search queries
Real-World Examples:
- E-commerce: Check inventory across stores
- Travel: Compare prices from airlines
- News: Fetch articles from sources
- Weather: Get forecasts for cities
- Social: Aggregate user feeds