मैं जावा के लिए एडब्ल्यूएस एसडीके का उपयोग कर रहा हूं और मैं बैच अनुरोधों के लिए बफरिंग एसिंक एसक्यू क्लाइंट का उपयोग कर रहा हूं ताकि मैं लागत कम कर सकूं।संदेश को फ़्लश करने के लिए मैं AmazonSQSBufferedAsyncClient को कैसे मजबूर कर सकता हूं?
जब मेरा एप्लिकेशन बंद हो जाता है, तो मैं यह सुनिश्चित करना चाहता हूं कि बफर में कोई संदेश प्रतीक्षा नहीं कर रहा है, लेकिन क्लाइंट पर कोई .flush()
विधि नहीं है।
क्या AmazonSQSBufferedAsyncClient.shutdown()
कॉल किए जाने पर मेरे संदेश फ़्लश करते हैं? मैंने source code देखा और यह अस्पष्ट है। प्रणाली को बुलाती है प्रत्येक QueueBuffer
यह है कि पर shutdown()
, लेकिन QueueBuffer.shutdown()
अंदर यह
public void shutdown() {
//send buffer does not require shutdown, only
//shut down receive buffer
receiveBuffer.shutdown();
}
आगे कहते हैं, .shutdown()
के लिए दस्तावेज़ का कहना है:
बन्द हो जाता है इस ग्राहक वस्तु नीचे, किसी भी संसाधनों को रिहा हो सकता है कि खुला यह एक वैकल्पिक विधि है, और कॉलर्स को पर कॉल करने की उम्मीद नहीं है, लेकिन अगर वे स्पष्ट रूप से किसी भी खुले संसाधनों को रिलीज़ करना चाहते हैं। एक बार ग्राहक बंद हो जाने के बाद, इसका उपयोग पर और अधिक अनुरोध करने के लिए नहीं किया जाना चाहिए।
इस एप्लिकेशन के लिए, मुझे यह सुनिश्चित करने की ज़रूरत है कि buffered होने पर कोई संदेश खो जाए। क्या मुझे बफरिंग/async एक के बजाय सामान्य AmazonSQSClient
का उपयोग करके मैन्युअल रूप से इसे संभालने की आवश्यकता है?
मैं इस पाया, जो एक ही सवाल हो गया लगता है, और वर्तमान में उत्तर नहीं दिया गया: https://forums.aws.amazon.com/thread.jspa?threadID=122189 – Daenyth