2008-09-17 7 views
10

मैं एक्टिवएमक्यू के साथ कुछ bespoke संदेश कतारों को प्रतिस्थापित करने की कोशिश कर रहा हूं, और मुझे पर्ल से उनसे बात करने की ज़रूरत है। ActiveMQ एक स्टॉम्प इंटरफ़ेस प्रदान करता है और पर्ल में नेट :: स्टॉम्प है, इसलिए ऐसा लगता है कि यह ठीक होना चाहिए, लेकिन ऐसा नहीं है।मैं स्टॉम्प और एक्टिवएमक्यू (और पर्ल) के साथ लेनदेन का उपयोग कैसे करूं?

भले ही मैं स्टॉम्प पर एक BEGIN कमांड भेजता हूं, फिर भी SEND के साथ भेजे गए संदेश तुरंत प्रकाशित होते हैं, और यदि मैं लेनदेन के करीब हूं, तो कुछ भी नहीं होता है।

मुझे कोई स्पष्ट उत्तर नहीं मिल रहा है जो सुझाव देता है कि यह संभव नहीं है, यह संभव है, या कॉन्फ़िगरेशन का एक प्रासंगिक बिट है। साथ ही, सर्वर से त्रुटि प्रतिक्रियाओं की जांच के लिए Stomp एक महान प्रोटोकॉल प्रतीत नहीं होता है।

क्या मैं भाग्य से बाहर हूं?

उत्तर

3

बीटीडब्ल्यू पर्ल/एक्टिवएमक्यू/स्टॉम्प प्रश्न पूछने के लिए सबसे अच्छी जगह ActiveMQ user forum है क्योंकि बहुत सारे पर्ल-स्टॉम्प लोग वहां लटकते हैं।

STOMP लेनदेन के साथ चाल यह सुनिश्चित करना है कि आपके द्वारा भेजे जाने वाले प्रत्येक संदेश या आपके द्वारा किए गए प्रत्येक पावती में लेनदेन आईडी शीर्षलेख शामिल है। transaction handling section of the STOMP protocol देखें।

इसका कारण यह है कि STOMP के साथ आप एक ही समय में कई लेन-देन कर सकते हैं यदि आपका ग्राहक बहु थ्रेड किया गया है - कुछ गैर-लेनदेन वाले परिचालनों के साथ।

+0

हाँ, मैं स्टॉम्प प्रोटोकॉल नियमों का पालन कर रहा हूं और एक लेनदेन शीर्षलेख भेज रहा हूं। (काश मैं इस मशीन पर काम कर रहा tcpflow मिल सकता है; tcpdump stomp देखने के लिए बेकार है।) मैं भी उस मंच का प्रयास करेंगे, धन्यवाद! – rjbs

1

Net::Stomp::Receipt पर एक नज़र डालें। यह नेट :: स्टॉम्प का उप-वर्ग है जो स्टॉम्प प्रोटोकॉल से "रिटर्न रसीद" लागू करता है, और आपको यह सुनिश्चित करने की अनुमति देता है कि आपके संदेश का सही स्वागत है, और अन्यथा लेनदेन को रोक दें।

1

आपको लेनदेन के अंदर पावती को लपेटना होगा।

स्यूडोकोड (या छद्म STOMP) में यह होगा:

  • शुरू [लेन-देन आईडी] -> सर्वर को भेज
  • MESSAGE [संदेश- ID] (प्राप्त) < - सर्वर
  • से प्राप्त
  • एसीके [संदेश- ID] [लेन-देन आईडी] -> सर्वर
  • COMMIT [लेन-देन आईडी] को भेज -> सर्वर को भेज

मैं पहले से ही PHP ड्राइवर के साथ काम कर चुके हैं (जब मैं फ्रेम ऑब्जेक्ट को स्वीकार करने के लिए पास करता हूं तो लेनदेन आईडी का उपयोग करने के लिए निरस्त कॉल को पैच करना)।

दुर्भाग्य से, चार संदेशों को फिर से वितरित करने के बाद ग्राहक बंद हो जाता है। कम से कम यह मेरे साथ होता है।

+0

यदि कहता है, मेरे पास थोड़ी देर लूप है, तो क्या छद्म कोड लूप में होगा? या BEGIN और ABORT बाहर हो जाएगा? – obsessiveCookie

+1

वे लूप के अंदर होंगे क्योंकि आपको भेजे गए और प्राप्त किए गए प्रत्येक संदेश के लिए एक लेनदेन खोलने की आवश्यकता है। –

+0

क्या ट्रांजैक्शन-आईडी हर बार कुछ अलग हो जाएगी? – obsessiveCookie

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