Springboot 多线程压测post get put 接口
在Spring Boot中,可以使用多线程来进行压测POST、GET和PUT接口。以下是一个简单的示例代码,演示了如何使用多线程进行接口压测。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@SpringBootApplication
@EnableAsync
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Component
class ApiTester {
private final RestTemplate restTemplate;
public ApiTester(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
// 压测POST接口
public void testPost() {
String url = "http://localhost:8080/api/post"; // 你的POST接口URL
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("param1", "value1");
map.add("param2", "value2");
// 添加更多参数
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
// 处理响应结果
}
// 压测GET接口
public void testGet() {
String url = "http://localhost:8080/api/get"; // 你的GET接口URL
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
// 处理响应结果
}
// 压测PUT接口
public void testPut() {
String url = "http://localhost:8080/api/put"; // 你的PUT接口URL
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("param1", "value1");
map.add("param2", "value2");
// 添加更多参数
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
restTemplate.put(url, request);
// 处理响应结果
}
// 定时任务,每秒钟启动10个线程并发压测接口
@Scheduled(fixedRate = 1000)
public void runTest() {
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
executorService.submit(() -> {
testPost();
testGet();
testPut();
});
}
executorService.shutdown();
}
}
在上述代码中,ApiTester类包含了三个方法testPost()、testGet()和testPut(),分别用于压测POST、GET和PUT接口。这些方法使用了RestTemplate来发送HTTP请求,并处理相应结果。
在runTest()方法中,使用定时任务每秒钟启动10个线程并发执行压测方法。这样可以模拟多个并发用户同时访问接口。你可以根据需要调整线程数和定时任务的频率。
请注意替换代码中的接口URL为你实际的接口URL。此外,还需要在Spring Boot应用中配置RestTemplate的Bean。
希望以上内容对你有帮助
原文地址: http://www.cveoy.top/t/topic/ib4I 著作权归作者所有。请勿转载和采集!