PHP RabbitMQ कार्य मोड
RabbitMQ में कार्य मोड का अर्थ है कि एक ही कतार से संदेशों की प्रक्रिया करने के लिए कई कन्ज्यूमर्स को कॉन्फ़िगर करना, जो संदेशों की समकलीन प्रक्रिया गति को बढ़ा सकता है। संरचना नीचे दिए गए डायग्राम में दिखाई गई है:
नोट: रैबिटएमक्यू काम करने के मोड का उपयोग करने के बावजूद, प्रत्येक कतार को कई कन्ज्यूमर्स का समर्थन करता है, और एक ही कतार में एक संदेश को केवल एक कन्ज्यूमर द्वारा प्रसंस्कृत किया जाएगा।
1. पूर्वापेक्षा शिक्षण
कृपया संबंधित ज्ञान को समझने के लिए निम्नलिखित खंड पढ़ें:
- RabbitMQ मूल सिद्धांत
- RabbitMQ Work Mode
- PHP में RabbitMQ के लिए त्वरित प्रारंभ (अनिवार्य पढ़ें, क्योंकि आगामी खंड कोड को नकल नहीं करेंगे, केवल कुंजी कोड दिखाएंगे)
2. PHP में कई कन्ज्यूमर्स का अमलीकरण
PHP खुद में एक साथिकाता और कोरूटिन जैसी अन्य साथिक प्रौद्योगिकियों का समर्थन नहीं करता है, इसलिए सामान्यत: सामान्यत: कई प्रक्रियाओं का उपयोग समकलीन प्रक्रिया प्राप्त करने के लिए उपयोग किया जाता है। यहाँ, हम समानक्रिया कन्ज्यूमर्स की प्रक्रिया करते हुए कई प्रक्रियाओं का अमलीकरण करने के लिए मल्टी-प्रोसेस मोड का उपयोग करते हैं।
2.1. हाथ से विभिन्न प्रक्रियाओं की प्रारंभ
विभिन्न प्रक्रियाओं को अमलीकरण करने के लिए सबसे सरल तरीका है कि हम PHP कमांड को हाथ से कई बार चलाएँ।
उदाहरण के लिए:
पूर्व खंड से कंज्यूमर स्क्रिप्ट का अनुमानित नाम recv.php
होता है, हम इस तरह से कई शैल विंडोज़ को खोलकर कंज्यूमर स्क्रिप्ट को बार-बार चलाते हैं:
php recv.php
php recv.php
या एक ही शैल विंडोज़ में, स्क्रिप्ट को पिछले घमाने में बैकग्राउंड में चलाने के लिए इसी तरह से कर सकते हैं:
php recv.php &
php recv.php &
स्पष्टीकरण: इस मैन्युअल तरीके से विभिन्न कंज्यूमर्स का अमलीकरण करने के हानिकारक दोष है कि प्रक्रियाएँ अच्छे से नहीं रखी जाती हैं, कोई प्रक्रिया गिर जाती है, तो वह स्वचालित रूप से पुनः आरंभ नहीं होगी।
2.2. सुपरवाइजर का उपयोग करके विभिन्न प्रक्रियाओं का अमलीकरण
सुपरवाइजर एक प्रक्रिया निगरानी उपकरण है जो लिनक्स ऑपरेटिंग सिस्टम में होता है, जो PHP प्रक्रियाएँ निगरानी कर सकता है। अगर कोई PHP प्रक्रिया गिर जाती है, तो वह स्वचालित रूप से पुनः प्रारंभ की जाएगी। यह भी प्रक्रियाओं की समकलीनता को कॉन्फ़िगर कर सकता है, जिससे कई कन्ज्यूमर्स की समकलीन प्रक्रिया प्राप्त करना आसान हो जाता है।
यहां एक उदाहरण है जिसमें Ubuntu का उपयोग हो रहा है, अन्य लिनक्स वितरणों के लिए भी यही है।
सुपरवाइजर की स्थापना
sudo apt-get install supervisor
सुपरवाइजर का कॉन्फ़िगर करना
सुपरवाइजर का कॉन्फ़िगरेशन फ़ाइल सामान्यत: /etc/supervisor/conf.d निर्देशिका में स्थित होती है। इस निर्देशिका में, हमारी प्रक्रियाओं को कैसे निगरानी करने के लिए किसी भी संख्या की कॉन्फ़िगरेशन फ़ाइलें बना सकते हैं। उदाहरण के लिए, हमारी कंज्यूमर प्रक्रियाओं को निगरानी करने के लिए एक फ़ाइल rabbitmq-worker.conf
बनाएं।
उदाहरण: फ़ाइल: rabbitmq-worker.conf
[program:rabbitmq-worker]
process_name=%(program_name)s_%(process_num)02d
command=php recv.php
autostart=true
autorestart=true
user=root
numprocs=10
redirect_stderr=true
stdout_logfile=/var/log/worker.log
पैरामीटर व्याख्या:
- process_name: प्रक्रिया नाम की परिभाषा, कोई भी नाम दे सकते हैं। यहां, दो चर में उपयोग किया गया है:
program_name
(प्रक्रिया नाम) औरprocess_num
(प्रक्रिया संख्या)। - command: वह कमांड जो हमें चलानी है।
- autostart: क्या स्वचालित रूप से बूट पर शुरू करना है।
- autorestart: क्या स्वचालित रूप से पुनः आरंभ करना है।
- user: किस सिस्टम खाते का उपयोग करना है कमांड चलाने के लिए।
- numprocs: समकलीन प्रक्रियाओं की संख्या, यह दर्शाता है कि कितनी प्रक्रियाएँ शुरू करनी हैं।
- stdout_logfile: चल रहे लॉग फ़ाइल को कहां बचाया जाए।