Java 使用Rest模板的多post请求

Java 使用Rest模板的多post请求,java,spring,multithreading,microservices,resttemplate,Java,Spring,Multithreading,Microservices,Resttemplate,我正在从事一个spring boot微服务项目 我在主类中有两种方法: @Bean public void Testing(){ BinServiceImpl binService = new BinServiceImpl() ; binService.start();//start run () } @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new R

我正在从事一个spring boot微服务项目

我在主类中有两种方法:

  @Bean
  public void Testing(){
    BinServiceImpl binService =  new BinServiceImpl() ;

   binService.start();//start run ()

  }
  @Bean
  @LoadBalanced
  public RestTemplate getRestTemplate() {
    return new RestTemplate();
  }
BinServiceImpl类:

@Service
public class BinServiceImpl extends Thread implements BinService{

  @Autowired private RestTemplate restTemplate;

  @Override
  public void run() {
    try {
      Thread.sleep(120000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    while (true) {
      try {
        System.out.println("Run Thread");
        Thread.sleep(30000);
        TestingMicroServicesCom();
      } catch (InterruptedException e) {
        e.printStackTrace();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
 public void TestingMicroServicesCom() {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("subject", "Testing");
    jsonObject.put("body", "Testing");
    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<Object> requestEntity = new HttpEntity<>(jsonObject, requestHeaders);
    String notificationUrl = String.format("MyUrl");
    ResponseEntity<String> userDetailsResponse =
      restTemplate.postForEntity(notificationUrl, requestEntity, String.class);
    System.out.println(userDetailsResponse.getBody());
}
@服务
公共类BinServiceImpl扩展线程实现BinService{
@自动连线专用RestTemplate RestTemplate;
@凌驾
公开募捐{
试一试{
睡眠(120000);
}捕捉(中断异常e){
e、 printStackTrace();
}
while(true){
试一试{
System.out.println(“运行线程”);
睡眠(30000);
测试MicroServicesCOM();
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
}
}
public void TestingMicroServicesCom(){
JSONObject JSONObject=新的JSONObject();
jsonObject.put(“受试者”、“测试”);
jsonObject.put(“主体”、“测试”);
HttpHeaders requestHeaders=新的HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity requestEntity=新的HttpEntity(jsonObject,RequestHeader);
String notificationUrl=String.format(“MyUrl”);
ResponseEntity用户详细信息响应=
postForEntity(notificationUrl、requestEntity、String.class);
System.out.println(userDetailsResponse.getBody());
}

我测试了我的应用程序,它可以毫无问题地发送请求,当我使用thread每30秒发出多个请求时,它就停止工作。

您使用annotation@service声明了bean BinServiceImpl,但没有使用它,同时在方法测试()中创建了同一类的另一个实例没有提到它

您可以远程方法Testing()并在BinServiceImpl中添加一个新的公共方法,以便运行不推荐的线程

@PostConstruct
public void initThread(){
这个。start();
}
或者以适当的方式使用基于TaskExecutor的@Scheduled注释

@计划(固定延迟=30000)
public void testingMicroServicesCom(){
...
}

正在运行,立即解决问题->错误java.lang.NullPointer此行异常ResponseEntity userDetailsResponse=restTemplate.postForEntity(notificationUrl、requestEntity、String.class);可能是restTemplate为null。发布最后一个代码以进行检查(包括配置类)