मेरे पास एक साधारण फ़ाइल स्थानांतरण एप्लिकेशन है जो स्टैंडअलोन जावा एप्लिकेशन के रूप में चलाया जाता है। यह एक एसएफटीपी एंडपॉइंट से फ़ाइलें लेता है और उन्हें दूसरे एंडपॉइंट पर ले जाता है।मैं एक स्टैंडअलोन कैमल एप्लिकेशन कैसे बना सकता हूं जो स्वचालित रूप से बंद हो सकता है?
फ़ाइलों को स्थानांतरित करने के बाद एसएफटीपी एंडपॉइंट से हटा दिए जाते हैं। जब कोई और फाइल नहीं छोड़ी जाती है, तो यह प्रोग्राम आदर्श होगा कि कार्यक्रम समाप्त हो। हालांकि, मुझे कोई समाधान नहीं मिला है जहां मैं ऊंट शुरू कर सकता हूं और को सशर्त रूप से समाप्त कर सकता हूं (जैसे कि एसएफटीपी एंडपॉइंट में कोई और फाइल नहीं है)। मेरा कामकाज वर्तमान में ऊंट शुरू करने के लिए है और उसके बाद मुख्य धागा बहुत लंबे समय तक सो रहा है। उपयोगकर्ता को मैन्युअल रूप से एप्लिकेशन को मारना होगा (CTRL + C या अन्यथा के माध्यम से)।
क्या एप्लिकेशन को समाप्त करने का कोई बेहतर तरीका है कि यह स्वचालित रूप से ऐसा करता है?
CamelContext में (वसंत अनुप्रयोग प्रसंग):
नीचे मेरे वर्तमान कोड है
<route>
<from uri="sftp:(url)" />
<process ref="(processor)" />
<to uri="(endpoint)" />
</route>
main() प्रणाली:
public static void main(String[] args)
{
ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
CamelContext camelContext = appContext.getBean(CamelContext.class);
try
{
camelContext.start();
Thread.sleep(1000000000); // Runs the program for a long time -- is there a better way?
}
catch (Exception e)
{
e.printStackTrace();
}
UploadContentLogger.info("Exiting");
}