2010-11-03 7 views
8

के साथ संदेशों का बल आदेश मैंने एक जेएमएस सर्वर (क्यूई) के रूप में हॉर्नसेट के साथ एक जेएमएस सर्वर स्थापित किया है।HornetQ

मेरे पास एक ऐसा एप्लिकेशन है जो एक निर्माता के रूप में कार्य करता है और उपभोक्ता के रूप में एक और अलग कंप्यूटर (अलग कंप्यूटर)।

मैं समझता हूं कि जेएमएस विनिर्देश वितरण के आदेश की गारंटी नहीं देता है, लेकिन मैं बस ऐसा करने का एक तरीका ढूंढ रहा हूं: संदेश प्राप्त करने के क्रम में प्राप्त करें, भले ही यह प्रदाता हो विशिष्ट।

कोई विचार?

उत्तर

2

जाहिर है यह उपभोक्ता कैश को अक्षम करके हासिल किया जा सकता है। यह hornetq-jms.xml बदलते द्वारा किया जाता है:

<connection-factory name="ConnectionFactory"> 
     <connectors> 
     <connector-ref connector-name="netty-connector"/> 
     </connectors> 
     <entries> 
     <entry name="ConnectionFactory"/> 
     </entries> 

     <consumer-window-size>0</consumer-window-size> <!-- add this line --> 
    </connection-factory> 
+1

लेकिन खिड़की के आकार को 0 पर सेट करके आपने प्रभावी ढंग से कैशिंग की एक परत को मार दिया है जो प्रदर्शन को प्रभावित करता है और प्रभावित करेगा। –

+0

मेरे मामले में संदेशों का क्रम कुछ संभावित प्रदर्शन हानि से कहीं अधिक महत्वपूर्ण है। हालांकि अगर आपके पास एक बेहतर विचार है तो मैं इसे वाकई सुनना चाहूंगा। धन्यवाद। – Bogdan

+0

इस विकल्प को सेट करने के लिए मेरे लिए काम नहीं किया, स्थानीय रूप से HornetQ 2.2.5 के साथ परीक्षण किया। एक ग्राहक संदेश उत्पन्न करता है, एक उपभोग करता है, क्रम अनुक्रमिक नहीं है। – Dag

1

असल JMS विनिर्देश की धारा 4.4.10.2 (संदेश के आदेश भेजता है) आदेश के बारे में बहुत स्पष्ट है।

यदि आपके पास एक एकल उत्पादक और एकल उपभोक्ता है जो कतार या विषय सदस्यता के लिए है, तो संदेश आदेश हमेशा पुनर्विक्रय की उपस्थिति में भी गारंटी दी जाती है।

यदि आपके पास एकाधिक उपभोक्ता हैं, तो ग्राहक बफरिंग रोलबैक के मामले में या आपके उपभोक्ता को बंद करने के मामले में फिर से वितरित किया जा सकता है, और क्लाइंट बफर ऑर्डर करने से बाहर किया जा सकता है।

हॉर्नसेट पर आपके पास संदेश समूह भी है जो उत्पादित संदेशों को अतिरिक्त ऑर्डरिंग बाधाओं का अधिकार देता है।

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