2017-05-17 1 views
0

Je développe une API REST au printemps Boot que je fournirai la réponse dans la plupart 1-3 Controller sec.My est comme ci-dessous:Comment vous assurer que tous les appels d'API sont servis (appels d'API Queuing Rest)?

@RestController 
public class ApiController { 
    List<ApiObject> apiDataList; 

    @RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET) 
    public ResponseEntity<List<ApiObject>> getData(){          
     List<ApiObject> apiDataList=getApiData(); 
     return new ResponseEntity<List<ApiObject>>(apiDataList,HttpStatus.OK); 
    } 
    @ResponseBody 
    public List<ApiObject> getApiData(){ 
     List<ApiObject> apiDataList3=new List<ApiObject>(); 
     //do the processing 
     return apiDataList3; 
    } 
} 

J'ai 300 utilisateurs chargement simultanément la API.I effectuées le test de charge avec JMeter et c'était ok.Mais encore il y avait quelques échecs (pas tous les appels API ont été servis) .So comment puis-je surmonter cela? Comment imlement toute file d'attente sur les appels API qui arrive ou d'autres méthodes pour assurer chaque Appel API est répondu avec des données?

Répondre

1

Voulez-vous dire que vous voulez vous assurer que toutes les demandes renvoient les données ?! Si oui, vous pouvez utiliser @Async et obtenir le CompletableFuture. Ensuite, dans votre contrôleur, vous pouvez utiliser CompletableFuture pour obtenir la réponse. En cas d'échec, vous pouvez définir le délai d'attente pour cela et attraper l'exception pour consigner l'erreur.

Espérons cette aide.

+0

Oui Je veux que toutes les demandes retournent les données. Pouvez-vous expliquer un peu ce qui se passe réellement dans le cas de @Async? Il serait utile si vous fournissez un exemple – Ricky

+0

Je crois que cet exemple est clair à partir du printemps: https://spring.io/guides/gs/async-method/. Mais en Java 8, nous avons le CompletableFuture qui est meilleur que Future. L'échantillon à appliquer est ici: https://www.javacodegeeks.com/2016/04/spring-async-javas-8-completablefuture.html –