के पार हो गई कॉन्फ़िगर किया गया अधिकतम-खुले अनुरोधों मूल्य मैं निम्नलिखित कोडअक्का Http: [32]
def post(endpoint: String, entity: Strict) = {
Http().singleRequest(HttpRequest(uri = Notifier.notificationUrl + endpoint, method = HttpMethods.POST,
entity = entity)) onComplete {
case Success(response) => response match {
case HttpResponse(StatusCodes.OK, _, _, _) =>
log.info("communicated successfully with Server")
}
case Failure(response) =>
log.error("communicated failed with Server: {}", response)
}
}
यह
निम्नलिखित के रूप में हर10 seconds
जब
Notifier
अभिनेता को मिलने वाले संदेश में कहा जाता है का उपयोग कर सर्वर से कुछ डेटा पोस्ट
case ecMonitorInformation: ECMonitorInformation =>
post("monitor", httpEntityFromJson(ecMonitorInformation.toJson))
समस्या?
मुझे लगता है कि प्रारंभ में (लगभग 5
सर्वर पर जाने का अनुरोध) लेकिन फिर यह लटका हुआ है, मुझे कोई लॉगिंग नहीं दिखाई दे रही है, सर्वर को कोई डेटा प्राप्त नहीं होता है। क्लाइंट साइड पर थोड़ी देर के बाद, मुझे निम्नलिखित
ERROR c.s.e.notification.Notifier - communicated failed with Server: java.lang.RuntimeException: Exceeded configured max-open-requests value of [32]
क्या चल रहा है? मैं यह समस्या कैसे हल करूं?
पर अधिक जानकारी देखें आप अंतर्निहित पूल में खुले अनुरोधों की कुल संख्या के लिए डिफ़ॉल्ट सीमा को मार रहे हैं, जिसके लिए आप किस मेजबान से बात कर रहे हैं। क्या आपके पूल में अनुरोध ठीक से पूरा हो रहे हैं? मेरा अनुमान है कि वे नहीं हैं और यही वजह है कि पूल का बैक अप ले रहा है और इस प्रकार इस सीमा को मार रहा है। आप सीमा बढ़ा सकते हैं लेकिन लगता है कि जब तक आप लटकने के अनुरोधों को ठीक नहीं कर लेते हैं, तब तक आप अपरिहार्य देरी कर सकते हैं। – cmbaxter
आपको Http() का केवल एक उदाहरण होना चाहिए। समाधान के साथ इसी तरह की समस्या जिसे आप ढूंढ सकते हैं (स्प्रे के लिए) http://stackoverflow.com/questions/29324591/spray-client-throwing-too-many-open-files-exception-when-giving-more-concurren – Yoda
@Yoda , जिसने समस्या को हल नहीं किया है – daydreamer