2011-02-11 18 views
8

खरगोश एमक्यू परियोजना की योजना बनाने के लिए सभी बक्से लगाता है, एक को बचाता है। मेरे पास एक कतार पर अलग-अलग श्रमिक होंगे और यह महत्वपूर्ण है कि वे नवीनतम संदेश (यानी नवीनतम अनुक्रम संख्या) को पहले (एलआईएफओ) संसाधित करें।खरगोश एमक्यू रीडरिंग संदेश

मेरा आवेदन ऐसा है कि नए संदेश बहुत पुराने अप्रचलित पुराने संदेश हैं। यदि आपके पास श्रमिकों को छोड़ने के लिए आप पुराने संदेशों को संसाधित कर सकते हैं लेकिन यह महत्वपूर्ण है कि पहले नए किए जाएं।

विभिन्न मंचों और इस तरह मैं केवल एक ही समाधान देख सकते हैं और है कि एक ग्राहक संदेश यह पहली चाहिए पर कार्रवाई करने के लिए है trawling के बाद:

  • सभी संदेशों का उपभोग
  • फिर से आदेश उनके अनुसार क्रम संख्या
  • कतार में पुन: सबमिट करें
  • पहला संदेश

बदसूरत और probl का उपभोग अगर ग्राहक आधा रास्ते मर जाता है तो इमेटिक। लेकिन मैबी किसी के यहां एक बेहतर समाधान है।

मेरे शोध आधारित है (आंशिक रूप से) पर:

नोट: संदेशों के उम्मीद यातायात मोटे तौर पर में हो जाएगा कुछ कतारों के लिए 1 संदेश/घंटा की सीमा और 100/मिनट के लिए अन्य लोग तो तारकीय कुछ भी नहीं।

उत्तर

3

के बाद से कोई जवाब नहीं मुझे लगता है कि मैं अपना होमवर्क नहीं बल्कि अच्छा प्रदर्शन किया है;)

वैसे भी, अन्य हितधारकों यह निर्णय लिया गया कि मैं अब के लिए LIFO आवश्यकता ड्रॉप कर सकते हैं के साथ आवश्यकताओं चर्चा के बाद। जब हम इसकी बात करते हैं तो हम इसके बारे में चिंता कर सकते हैं।

एक समाधान जिसे हम संभवतः गोद लेने के लिए समाप्त करेंगे, वह कार्यकर्ता के लिए दूसरी कतार खोलने के लिए है जिसका उपयोग कार्यकर्ता को यह जानने के लिए कर सकता है कि कौन सी नौकरियों को अनदेखा करना है + अतिरिक्त नियंत्रण/निगरानी जानकारी प्रदान करें (जो ऐसा लगता है कि हम करेंगे वैसे भी की जरूरत है)।

एएमक्यूपी 1.0 spec को लागू करने वाले खरगोश एमक्यू भी यहां मदद कर सकते हैं।

तो मैं इस प्रश्न को अभी उत्तर के रूप में चिह्नित करूंगा। कोई और अभी भी जोड़ने या सुधारने के लिए स्वतंत्र है।

1

एक संभावना यह एक पाश में basic.get का उपयोग करें और प्रतिक्रिया basic-ok.message-count के लिए प्रतीक्षा करने के लिए शून्य (अन्य सभी संदेशों को दूर फेंक) बनने के लिए हो सकता है:

while (<get ok> = <call basic.get>) { 
    if (<get ok>.message-count == 0) { 
    // Now <get ok> is the most recent message on this queue 
    break; 
    } else if (<is get-empty>) { 
    // Someone else got it 
    } 
} 
बेशक

, तो आप संदेश स्थापित करने के लिए होगा दलाल पर रूटिंग पैटर्न जैसे कि 1 उपभोक्ता संदेश दूर फेंकना किसी अन्य के साथ गड़बड़ नहीं करता है। पुनः कतार संदेश से बचने की कोशिश करें क्योंकि वे स्टैक के शीर्ष पर कतारबद्ध होंगे, जिससे उन्हें सबसे हालिया दिखने लगेगा।

+0

उत्तर के लिए धन्यवाद। हालांकि, मैं नहीं चाहता कि एक उपभोक्ता काम के अन्य लोगों को भूख लगी।मैं अन्य उपभोक्ताओं को थोड़ा कम हालिया संदेशों पर काम करना चाहूंगा (जो अभी भी कुछ जानकारी प्रदान करते हैं) उन्हें निष्क्रिय करने के बजाय बैठते हैं क्योंकि उपभोक्ता एक्स ने कतार खाली कर दी है। हालांकि यह मुझे लगता है कि संदेश दरों पर भी निर्भर करता है। – dgorissen

संबंधित मुद्दे