Yaygın olarak gösterildiği gibi 5 alma isteği göndermek için spring mvc 3.2.2 içinde apache http istemcisini kullanıyorum.Paralel GET istekleri nasıl gönderilir ve sonuç yanıtları beklenir?
Tüm bu eşzamansız olarak (paralel olarak) nasıl gönderebilir ve tüm GET isteklerinden ayrıştırılmış bir yük dizesi döndürmek için isteklerin geri dönmesini bekleyebilir miyim? Sadece genel olarak
public String myMVCControllerGETdataMethod()
{
// Send 1st request
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://api/data?type=1");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
// Send 2st request
HttpClient httpclient2 = new DefaultHttpClient();
HttpGet httpget2 = new HttpGet("http://api/data?type=2");
ResponseHandler2<String> responseHandler2 = new BasicResponseHandler();
String responseBody2 = httpclient.execute(httpget, responseHandler2);
// o o o more gets here
// Perform some work here...and wait for all requests to return
// Parse info out of multiple requests and return
String results = doWorkwithMultipleDataReturned();
model.addAttribute(results, results);
return "index";
}
Ah, çok cool! Bunu bir test sürüşü yapacağım. Teşekkürler! Ancak, sahip olduğum bir soru, yinelemeli döngüde hangi cevabın olduğunu nasıl anlarım? Ayrıca, denetleyicinin vatansızlığının sonuçlarda doWorkwithMultipleDataReturned() yöntemine geçmesini sağlamak ne anlama geliyor? – JaJ
Örnek kod, özgün isteği (URL) yanıtla birlikte 'GetRequestTask' soyutlamasıyla eşleştirmenizi sağlar. Yani '// PUT SENİN KODUNUZU BURADA' dizinizde zaten her iki dizge de var. Vatansız yorumu hakkında, “doWorkwithMultipleDataReturned” yönteminiz, denetleyicinizin örnek değişkeninde yanıtları tutabileceğiniz herhangi bir bağımsız değişken almadığından, varsayıcınızı varsayıyordum. Bu, denetleyicinizi durumsal hale getiriyor (aynı iş parçasının birden fazla iş parçacığı için kullanımını sınırlıyor) . Daha ziyade, bu problemden kaçınmak için yanıtları yalnızca yöntem değişkenleri olarak tutmalısınız. – superEb
Harika puan! Bilgi için tekrar teşekkürler! – JaJ