Мы запускаем API для загрузки файлов групп с API ниже: curl -X POST localhost: port / manager / createTask Rest API: (менеджер)
@RestController
@RequestMapping("/manager")
public class ClusterResource {
@Autowired
private MyService myService;
@PostMapping("/createTask")
@ResponseBody
public ResponseEntity doTasks() throws Exception {
myService.doTask();
return new ResponseEntity<>(HttpStatus.OK);
}
}
Класс MyService:
@Service
public class MyService
private String templateFileName = "example";
@Autowired
private DownloadService downloadService;
@Async
public ResponseTaskDto doTasks() throws Exception {
ResponseTaskDto result = new ResponseTaskDto();
int downloadFlag;
int taskFlag;
for (int i = 0; i < 10; i ++) {
if (doTask(i)) {
downloadFlag |= i; // downloaded file
result.setDownloadFlag(downloadFlag);
// execute some code to move file downloaded to correct location
// Execute setup proxy network, rollout services use resource file
taskFlag |= i; // setup done task
result.setTaskFlag(taskFlag);
}
}
return clusterResult;
}
private boolen doTask(int number) throws Exception {
String file = new String(templateFileName + number + ".mp4");
try {
downloadService.downloadFile(file);
} catch (Exception ex) {
// download service work well. can not here
//throw ex;
return false; // download filed: invalid url, ...
}
return true;
}
public class ResponseTaskDto {
int downloadFlag;
int taskFlag;
public void setDownloadFlag(int flag) {
this.downloadFlag = flag;
}
public int getDownloadFlag() {
return this.downloadFlag;
}
public void setTaskFlag(int flag) {
this.taskFlag = flag;
}
public int getTaskFlag() {
return this.taskFlag;
}
}
}
Класс DownloadService:
@FeignClient(value = "http://downloader")
public interface DownloadService {
@RequestMapping(value = "/downloader/api/", method = RequestMethod.POST, produces = {
MediaType.APPLICATION_JSON_VALUE })
void downloadFile(@PathVariable("file") String fileName);
}
мы являемся общедоступными 2-мя микросервисами менеджера как Manager1, Manager2 при вызове API, затем предполагается: предположим, что он будет использован manager1.
ЕслиСбой диспетчера микросервисов1 при получении слишком большого количества запросов.
Вопрос: Как администратору2 известно, что диспетчер служб прогресса1 продолжил createTask?Пример: Manager1 выполнил 3 шага (задача загрузки и настройки), прежде чем произошел сбой.