【发布时间】:2020-06-03 15:51:39
【问题描述】:
我有一个微服务,它通过多次调用另一个微服务来实现一些优化功能(第二个计算所谓的目标函数值,第一个微服务更改这个 tagrget 函数的参数)
这导致需要在 Rest Controller 层编写一些逻辑。为了清楚起见,下面将表示一些简化的代码
@RestController
public class OptimizerController {
private OptimizationService service;
private RestTemplate restTemplate;
@GetMapping("/run_opt")
public DailyOptResponse doOpt(){
Data iniData = service.prepareData(null);
Result r = restTemplate.postForObject(http://calc-service/plain_calc", iniData, Result.class);
double dt = service.assessResult(r);
while(dt > 0.1){
Data newData = service.preapreData(r);
r = restTemplate.postForObject(http://calc-service/plain_calc", newData , Result.class);
dt = service.assessResult(r);
}
return service.prepareResponce(r);
}
正如我在示例中看到的,所有人都在努力使休息控制器尽可能简单,并将所有逻辑移至服务层。但是如果我必须从服务层调用其他一些微服务呢?我应该在服务层中保留数据形式的逻辑并将其返回给控制器层,在服务层中使用 RestTemplate 对象还是其他什么?
感谢您的帮助
【问题讨论】:
标签: java spring-boot microservices spring-restcontroller