使用rest模板的java多post请求

shyt4zoc  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(478)

我在做一个springboot微服务项目
我在主类中有两种方法:

  1. @Bean
  2. public void Testing(){
  3. BinServiceImpl binService = new BinServiceImpl() ;
  4. binService.start();//start run ()
  5. }
  6. @Bean
  7. @LoadBalanced
  8. public RestTemplate getRestTemplate() {
  9. return new RestTemplate();
  10. }

binserviceimpl类:

  1. @Service
  2. public class BinServiceImpl extends Thread implements BinService{
  3. @Autowired private RestTemplate restTemplate;
  4. @Override
  5. public void run() {
  6. try {
  7. Thread.sleep(120000);
  8. } catch (InterruptedException e) {
  9. e.printStackTrace();
  10. }
  11. while (true) {
  12. try {
  13. System.out.println("Run Thread");
  14. Thread.sleep(30000);
  15. TestingMicroServicesCom();
  16. } catch (InterruptedException e) {
  17. e.printStackTrace();
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. }
  23. public void TestingMicroServicesCom() {
  24. JSONObject jsonObject = new JSONObject();
  25. jsonObject.put("subject", "Testing");
  26. jsonObject.put("body", "Testing");
  27. HttpHeaders requestHeaders = new HttpHeaders();
  28. requestHeaders.setContentType(MediaType.APPLICATION_JSON);
  29. HttpEntity<Object> requestEntity = new HttpEntity<>(jsonObject, requestHeaders);
  30. String notificationUrl = String.format("MyUrl");
  31. ResponseEntity<String> userDetailsResponse =
  32. restTemplate.postForEntity(notificationUrl, requestEntity, String.class);
  33. System.out.println(userDetailsResponse.getBody());
  34. }

我测试了我的应用程序,它可以发送请求没有任何问题,当我使用线程每30秒发出多个请求时,它停止工作。

sd2nnvve

sd2nnvve1#

您使用annotation@service声明了bean binserviceimpl,但没有使用它,同时在method testing()中创建了同一类的另一个示例,而没有保留对它的任何引用。
您可以远程方法testing()并在binserviceimpl中添加一个新的公共方法,以便运行不推荐的线程

  1. @PostConstruct
  2. public void initThread(){
  3. this.start();
  4. }

或者以适当的方式使用基于taskexecutor的@scheduled注解

  1. @Scheduled(fixedDelay = 30000)
  2. public void testingMicroServicesCom() {
  3. ...
  4. }

相关问题