我可以从查询MongoDB的微服务获得多个响应

问题描述 投票:0回答:1

我有服务,它将通过提供的一些参数查询MongoDB给我们回复

@RequestMapping(value = "/custRef/{custRef}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<String> getServiceId(@PathVariable("custRef") String custRef) throws InterruptedException {
    System.out.println("Thread.currentThread().getName() :"+Thread.currentThread().getName());
    String serviceId=//calling Mongo Service and getting the result 
    if(custRef == null) {
        return new ResponseEntity<String>("No service id available for the given FO Id:" + custRef,HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<String>(serviceId,HttpStatus.OK);
}

我有另一个客户端,它将通过提供适当的参数来调用上述服务。我想通过使用10个线程来调用上述服务。我可以从上述服务获得相同频率的响应,还是需要在运行上述服务的服务器上进行任何配置

ExecutorService es = Executors.newFixedThreadPool(50);

for (RouterInfo router : listOfcpeRouterInfo){
Future<String> serviceIDS = es.submit(new CalculationTaskA(router.getCustomerRef(), rieClient));
}

@Override
public String call() throws Exception {
    String currentThreadName = Thread.currentThread().getName();
    log.info("##### [" + currentThreadName + "] <" + taskId + "> STARTIING #####");
    // System.out.println("[" + currentThreadName + "] <" + taskId + ">
    // Sleeping for " + sleepTime + " millis");
    // TimeUnit.MILLISECONDS.sleep(sleepTime);
    //
    String serviceId = null;
    try {

        ///
        serviceId = rieClient.getObject(customerRef);
        log.info("serviceId for given foid: " + customerRef + " is " + serviceId);
    } catch (ParseException pe) {
        log.error("error while parsing Data", pe);
    }
    log.info("****** [" + currentThreadName + "] <" + taskId + "> DONE ******");
    return serviceId;
}
 calling above service
enter code here
 Inside  getObject I am doing below
ResponseEntity<String> response=restTemplate.exchange(this.serviceIdUrl+"/{foId}",HttpMethod.GET,entity,String.class,foId);
java spring tomcat executor
1个回答
0
投票

默认情况下,Spring Boot应用程序是多线程的,因此您的代码示例

ExecutorService es = Executors.newFixedThreadPool(50);

for (RouterInfo router : listOfcpeRouterInfo){ Future serviceIDS = es.submit(new CalculationTaskA(router.getCustomerRef(), rieClient)); }

如果“Mongo”服务要进行异步调用,则只需要在“Mongo”服务中使用。

© www.soinside.com 2019 - 2024. All rights reserved.