के साथ लंबे समय से चल रहे आरईएसटी एपीआई हम एक आरईएसटी एपीआई लागू कर रहे हैं, जो कई लंबे समय तक चलने वाले बैकएंड कार्यों को बंद कर देगा। मैं रीस्टफुल वेब सर्विसेज कुकबुक पढ़ रहा हूं और अनुशंसा की जा रही कार्य को इंगित करने वाली सामग्री-स्थान शीर्षलेख के साथ स्वीकृत HTTP 202/स्वीकृति देना है। (उदा। http://www.example.org/orders/tasks/1234), और क्लाइंट लंबे समय तक चल रहे कार्य पर अपडेट के लिए इस यूआरआई को मतदान करता है।कतार
विचार है कि आरईएसटी एपीआई तुरंत कतार में एक संदेश पोस्ट करे, जिसमें पृष्ठभूमि कार्यकर्ता कतार से संदेश उठाकर और कई बैकएंड कार्यों को कताई कर, कतारों का उपयोग करके भी। इस दृष्टिकोण के साथ मैं जो समस्या देखता हूं वह यह है कि कार्य को एक अद्वितीय आईडी कैसे असाइन करें और बाद में क्लाइंट को सामग्री-स्थान यूआरआई को GET जारी करके कार्य की स्थिति का अनुरोध करने दें।
REST API तुरंत एक कतार में पदों, तो यह एक GUID पैदा करते हैं और देते हैं के रूप में संदेश पर एक विशेषता कतार में जोड़ा जा रहा है, लेकिन अनुरोध की स्थिति प्राप्त करने में कठिनाई अजीब हो जाता है कि सकता है।
एक और विकल्प होगा कि आरईएसटी एपीआई तुरंत प्रारंभिक स्थिति के साथ डेटाबेस में एक प्रविष्टि जोड़ दे (चलो एक नया ऑर्डर आईडी के साथ ऑर्डर करें) और फिर बाद में कतार पर एक संदेश डालने के लिए कतार पर एक संदेश डालें बैक ग्राउंड वर्क, जो बाद में उस डेटाबेस रिकॉर्ड को अद्यतन करेगा। कार्य की स्थिति की जांच करते समय क्लाइंट का उपयोग करने के लिए एपीआई सामग्री-स्थान शीर्षलेख के यूआरआई में इस नई ऑर्डर आईडी को वापस कर देगा।
किसी भी तरह डेटाबेस डेटाबेस को पहले जोड़ना, फिर कतार में संदेश जोड़ना पीछे की ओर लगता है, लेकिन केवल कतार में अनुरोध जोड़ने से प्रगति को ट्रैक करना मुश्किल हो जाता है।
अनुशंसित दृष्टिकोण क्या होगा?
आपकी अंतर्दृष्टि के लिए बहुत बहुत धन्यवाद।
आपकी अंतर्दृष्टि के लिए बहुत बहुत धन्यवाद। मैं सभी व्यावहारिक समाधानों के लिए हूं, ऐसा लगता है कि एकल डेटाबेस दृष्टिकोण पर्याप्त होगा। उप-कार्यों को शामिल करने के लिए कार्य मॉडल को भी बढ़ाया जा सकता है, क्या एपीआई समर्थन समेकित अनुरोध होना चाहिए। धन्यवाद! – user2079172
अद्यतन और सुझाव के लिए धन्यवाद! :) यह सेटअप निश्चित रूप से एक व्यवहार्य समाधान होगा। हमारे इंटीग्रेटर्स कनेक्शन खोलने में सक्षम नहीं हो सकते हैं (विरासत प्रणाली), लेकिन अधिकतर एक मतदान करने में सक्षम हो सकते हैं। एक आरईएसटी एपीआई ब्रिजिंग और सर्विस बस/कतार के साथ 202/स्वीकृत दृष्टिकोण है जहां डिस्कनेक्ट मेरे लिए है। आदर्श रूप से सेवा बस/कतार अन्य प्रणालियों और इस मामले में एपीआई के लिए एकीकरण बिंदु होगी, सेवा बस (चैनल एडाप्टर) के साथ एक और सिस्टम को एकीकृत करने का एक और तरीका है। काम करने के लिए आपके सुझाव सेटअप के लिए, हमें एक और एब्स्ट्रक्शन लेयर की आवश्यकता होगी जो – user2079172
अपडेट_वेन्ट अपडेट को देखता है जैसा कि मैंने इसे देखा है। तो एपीआई होगा: 1. update_event तालिका में एक नई पंक्ति डालें और नई आईडी वापस करें। 2: सेवा बस कतार में तुरंत एक नया अनुरोध डालें। ग्राहक अब मतदान कर सकते हैं आदि। कार्यकर्ता भूमिका 1: कतार संदेश उठाता है और बैकएंड वर्कफ़्लो भेजता है। 2: एक बार किया जाने पर, इसे नए रिसोर्स यूआरआई इत्यादि के साथ update_event तालिका को अपडेट करना होगा। यहां समस्या यह है कि कार्यकर्ता की भूमिका विशेष आवश्यकताओं वाले क्लाइंट के बारे में जागरूक हो जाएगी, या? मतलब, यह अब मैसेजिंग सिस्टम के लिए सामान्य नहीं है? – user2079172