2013-01-02 58 views
5

मुझे आश्चर्य है कि क्या अक्का संदेश को संसाधित करने में देरी करने का कोई तरीका है?अक्का: एक टिकाऊ मेलबॉक्स में देरी जोड़ना

मेरा उपयोग केस: मेरे पास हर अनुरोध के लिए, मेरे पास थोड़ी सी काम है जो मुझे करने की ज़रूरत है और फिर मुझे दो घंटे बाद अतिरिक्त काम करने की आवश्यकता है।

क्या AKKA में किसी संदेश की प्रक्रिया में देरी करने का कोई आसान तरीका है? मुझे पता है कि मैं शायद एक बाहरी वितरित कतार स्थापित कर सकता हूं जैसे ActiveMQ, RabbitMQ जिसमें शायद यह सुविधा है लेकिन मैं नहीं बल्कि।

मुझे पता है कि मुझे मेलबॉक्स टिकाऊ बनाने की आवश्यकता होगी ताकि यह पुनरारंभ या क्रैश से बच सके। हमारे पास पहले से ही मोंगो सेटअप है इसलिए मैं स्थायित्व के लिए शायद MongoBasedMailbox का उपयोग कर रहा हूं।

उत्तर

0

यह आदर्श नहीं है, लेकिन Akka Camel Quartz scheduler चाल करेगा। अंतर्निहित अभिनेता सिस्टम शेड्यूलर से अधिक हेवीवेट, लेकिन पता है कि क्वार्ट्ज के अपने स्वयं के मुद्दे हैं।

+1

क्या आप क्वार्ट्ज स्थायित्व पर कोई उद्धरण या लिंक प्रदान कर सकते हैं? अगर ऐसी कोई गारंटी नहीं है, तो क्यों नहीं [सादा शेड्यूलर] (http://doc.akka.io/docs/akka/snapshot/scala/scheduler.html) का उपयोग करें? –

+0

सहमत हैं, अगर "काम की छोटी मात्रा" के परिणाम को पुनरारंभ करने की आवश्यकता है, तो आप किसी भी तरह से 'प्रीरस्टार्ट' के दौरान राज्य को बचा सकते हैं। स्थायित्व दुर्घटनाओं के लिए है। – idonnie

+1

@ ओम-नाम-नाम - क्वार्ट्ज में एक [लगातार नौकरी सुविधा] है (http://quartz-scheduler.org/overview/features)। – jamie

0

आप अभी भी सामान्य अक्का शेड्यूलर का उपयोग कर सकते हैं, तो सर्वर को पुनरारंभ होने पर आपको नौकरी खोने से बचने के लिए केवल अभिनेता दृढ़ता पर एक राज्य रखना होगा।

मैं हाल ही में इस्तेमाल किया है PersistentFsmActor - जो अभिनेता के राज्य कायम

मैं अपने मामले में सुनिश्चित करें कि आप का उपयोग करने के FSM (परिमित राज्य मशीन) है नहीं कर रहा हूँ रखेंगे, तो आप मूल रूप से सिर्फ एक persistentActor इस्तेमाल कर सकते हैं नौकरी डालने के समय को बचाने के लिए, और उस समय एक शेड्यूलर शुरू करें। इस तरह - यहां तक ​​कि यदि आपने सर्वर को पुनरारंभ किया है, तो भी अभिनेता एक नया शेड्यूल जॉब शुरू करेगा और इसे चलाने के लिए शेष समय की गणना करने के लिए लगातार डेटा का उपयोग करेगा

+0

और आप https://github.com/ironfish/akka-persistence-mongo का भी उपयोग कर सकते हैं – Elyran