Defective Code Logo

Total Downloads Latest Stable Version Latest Stable Version

English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文

Laravel SQS Extended

परिचय

Laravel SQS Extended एक Laravel 큐 चालक है जिसे AWS SQS Payload आकार सीमाओं के चारों ओर काम करने के लिए डिज़ाइन किया गया था। यह 큐 चालक स्वचालित रूप से बड़े Payload को एक डिस्क (आमतौर पर S3) पर सीरियलाइज़ करेगा और फिर रन टाइम पर उन्हें अनसीरियलाइज़ करेगा। इस पैकेज ने AWS डॉक्यूमेंटेशन से प्रेरणा ली है।

साधारण SQS Extended क्लाइंट से माइग्रेशन

  1. अपने प्रोजेक्ट से simplesoftwareio/simple-sqs-extended-client पैकेज को हटा दें।
  2. defectivecode/laravel-sqs-extended पैकेज को स्थापित करें।

पुराना कॉन्फ़िगरेशन नए पैकेज के साथ बैकवर्ड संगत है। एकमात्र परिवर्तन पैकेज का नाम है।

स्थापित करें

  1. सबसे पहले एक बकेट बनाएं जो सभी बड़े SQS Payloads को रखेगा।

हम दृढ़ता से अनुशंसा करते हैं कि आप SQS Payloads को संग्रहीत करते समय एक निजी बकेट का उपयोग करें। Payloads में संवेदनशील जानकारी हो सकती है और इन्हें सार्वजनिक रूप से साझा नहीं किया जाना चाहिए।

  1. 큐 चालक को स्थापित करने के लिए composer require defectivecode/laravel-sqs-extended चलाएँ।

  2. फिर, अपने queue.php फ़ाइल में निम्नलिखित डिफ़ॉल्ट 큐 सेटिंग्स जोड़ें।

Laravel Vapor उपयोगकर्ताओं को कनेक्शन नाम sqs पर सेट करना चाहिए। sqs कनेक्शन को Vapor Core में देखा जाता है और यदि आप एक अलग कनेक्शन नाम का उपयोग करते हैं, तो यह पुस्तकालय अपेक्षित रूप से काम नहीं करेगा।

/*
|--------------------------------------------------------------------------
| SQS Disk Queue Configuration
|--------------------------------------------------------------------------
|
| यहाँ आप SQS disk queue driver को कॉन्फ़िगर कर सकते हैं। यह सभी समान
| कॉन्फ़िगरेशन विकल्पों को साझा करता है जो अंतर्निहित Laravel SQS queue driver से हैं। केवल जोड़ा गया
| विकल्प `disk_options` है जिसे नीचे समझाया गया है।
|
| always_store: निर्धारित करता है कि सभी payloads को डिस्क पर संग्रहीत किया जाना चाहिए या नहीं, भले ही 큐 के आकार की सीमा।
| cleanup: निर्धारित करता है कि क्या payload फ़ाइलों को डिस्क से हटा दिया जाना चाहिए जब कार्य संसाधित हो जाता है। फ़ाइलों को पीछे छोड़ना
| डिबगिंग कारणों के लिए फिर से 큐 कार्यों को खेलने के लिए उपयोगी हो सकता है।
| disk: SQS payloads को सहेजने के लिए डिस्क। इस डिस्क को आपके Laravel filesystems.php कॉन्फ़िग फ़ाइल में कॉन्फ़िगर किया जाना चाहिए।
| max_size: वैकल्पिक। ऑफ़लोड थ्रेशोल्ड को निश्चित संख्या के बाइट्स में पिन करता है। जब छोड़ा जाता है, थ्रेशोल्ड से पढ़ा जाता है
| स्वयं 큐 से। नीचे "Payload आकार थ्रेशोल्ड" देखें।
| prefix Payloads को स्टोर करने के लिए उपसर्ग (फोल्डर)। यदि आप अन्य SQS 큓 के साथ डिस्क साझा कर रहे हैं, तो यह उपयोगी है।
| उपसर्ग का उपयोग करते हुए 큐:clear कमांड फ़ाइलों को साझा करने वाले अन्य sqs-disk आधारित 큓 से अलग नष्ट करने में मदद करता है
| वही डिस्क।
|
*/
'sqs' => [
'driver' => 'sqs-disk',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'default'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'after_commit' => false,
'disk_options' => [
'always_store' => false,
'cleanup' => false,
'disk' => env('SQS_DISK'),
'prefix' => 'bucket-prefix',
],
],
  1. अपने 큐 को चालू करें और SQS की Payload सीमा के बारे में चिंता किए बिना लाभ उठाएं 🥳

Payload आकार थ्रेशोल्ड

AWS ने अगस्त 2025 में अधिकतम SQS Payload को 256 KiB से 1 MiB तक बढ़ा दिया, लेकिन MaximumMessageSize एक प्रति-큐 विशेषता है — उस परिवर्तन से पहले बनाई गई 큓 पुरानी 262144 बाइट मूल्य को बनाए रखती है जब तक कि आप इसे न बढ़ाएँ। किसी भी सीमा को मानने के बजाय, यह पैकेज 큓 से विशेषता पढ़ता है और केवल वही ऑफ़लोड करता है जो वास्तव में नहीं आएगा।

थ्रेशोल्ड निम्नलिखित क्रम में हल किया जाता है, और पहली मेल जीतती है। एक Payload को डिस्क पर तब संग्रहीत किया जाता है जब इसकी लंबाई हल किए गए थ्रेशोल्ड के बराबर या उससे अधिक हो।

स्थिति थ्रेशोल्ड 큐 विशेषता पढ़ता है
always_store true है प्रत्येक payload संग्रहीत है नहीं
max_size सेट किया गया है कॉन्फ़िगर किया गया मूल्य नहीं
262144 (2025 से पहले की डिफ़ॉल्ट) की रिपोर्ट करती है 250000 हाँ
1048576 (अधिकतम तक बढ़ी) रिपोर्ट करती है 1036432 हाँ
विशेषता नहीं पढ़ी जा सकती 250000 एक बार कोशिश की

12144 बाइट्स का सुरक्षित हेडर प्रति-संदेशक ओवरहेड को कवर करता है, और इसे इस तरह से आकार दिया गया है कि 262144 बाइट डिफ़ॉल्ट पर छोड़ी गई 큐 250000 बाइट थ्रेशोल्ड को सुलझाती है जिसका उपयोग इस पैकेज के पिछले संस्करणों द्वारा किया गया था। अपग्रेडिंग तब तक व्यवहार को नहीं बदलती जब तक कि आप 큐 की अपनी सीमा को नहीं बढ़ाते।

अनुमतियाँ

विशेषता पढ़ने के लिए sqs:GetQueueAttributes की आवश्यकता होती है। परिणाम को प्रति 큐 मेमोरी में संग्रहीत किया जाता है, इसलिए प्रोसेस की अवधि के लिए यह प्रति कार्य एक कॉल की लागत नहीं है बल्कि प्रति 큓 है।

यदि विशेषता नहीं पढ़ी जा सकती है — एक संकीर्ण IAM नीति, या एक SQS इम्यूलेटर जो इसे लागू नहीं करता है — चालक 250000 बाइट थ्रेशोल्ड पर वापस गिरता है और डिस्पैच करना जारी रखता है। यदि आप अनुमति देना नहीं चाहते हैं तो max_size को बिना किसी खोज के छोड़ने के लिए सेट करें।

큐 की सीमा बढ़ाना

aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/your-account-id/your-queue \
--attributes MaximumMessageSize=1048576

ध्यान दें कि SQS 64 KB के टुकड़ों में उपयोग को मेटर करता है, इसलिए एकल 1 MiB संदेश के लिए 16 अनुरोधों का बिल होता है। डिस्क पर बड़े Payloads को संग्रहीत करना अक्सर सस्ता रास्ता होता है।

समर्थन दिशानिर्देश

हमारे ओपन सोर्स पैकेज को चुनने के लिए धन्यवाद! कृपया इन समर्थन दिशानिर्देशों को देखने के लिए एक क्षण निकालें। ये आपको हमारे प्रोजेक्ट का अधिकतम लाभ उठाने में मदद करेंगे।

सामुदायिक संचालित समर्थन

हमारा ओपन-सोर्स प्रोजेक्ट हमारी शानदार सामुदायिक द्वारा संचालित होता है। यदि आपके पास प्रश्न हैं या सहायता की आवश्यकता है, तो StackOverflow और अन्य ऑनलाइन संसाधन आपके लिए सबसे अच्छे विकल्प हैं।

बग और विशेषता प्राथमिकता

एक ओपन-सोर्स प्रोजेक्ट का प्रबंधन करने की वास्तविकता का मतलब है कि हम तुरंत हर रिपोर्ट की गई बग या विशेषता अनुरोध को संबोधित नहीं कर सकते। हम मुद्दों को निम्नलिखित क्रम में प्राथमिकता देते हैं:

1. हमारे भुगतान किए गए उत्पादों को प्रभावित करने वाले बग

जो बग हमारे भुगतान किए गए उत्पादों को प्रभावित करते हैं, वे हमेशा हमारी सर्वोच्च प्राथमिकता होंगे। कुछ मामलों में, हम केवल उन बग को संबोधित कर सकते हैं जो हमें सीधे प्रभावित करते हैं।

2. सामुदायिक पुल अनुरोध

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

3. वित्तीय समर्थन

उक्त श्रेणियों के बाहर के मुद्दों के लिए, आप उनके समाधान के लिए धन देने का विकल्प चुन सकते हैं। प्रत्येक खुले मुद्दे को एक आदेश फॉर्म से जोड़ा गया है जहाँ आप वित्तीय रूप से योगदान कर सकते हैं। हम प्रदान किए गए धनराशि के आधार पर इन मुद्दों को प्राथमिकता देते हैं।

सामुदायिक योगदान

ओपन सोर्स तब फलता-फूलता है जब इसका समुदाय सक्रिय होता है। भले ही आप बग ठीक नहीं कर रहे हों, कोड सुधार, दस्तावेज़ अपडेट, ट्यूटोरियल के माध्यम से या सामुदायिक चैनलों में अन्य लोगों की सहायता करके योगदान करने पर विचार करें। हम हर किसी को, एक समुदाय के रूप में, ओपन-सोर्स कार्य का समर्थन करने के लिए बहुत प्रोत्साहित करते हैं।

दोहराने के लिए, DefectiveCode हमारे भुगतान किए गए उत्पादों पर प्रभाव, सामुदायिक पुल अनुरोध और मुद्दों के लिए प्राप्त वित्तीय समर्थन के आधार पर बग को प्राथमिकता देगा.

लाइसेंस - MIT लाइसेंस

कॉपीराइट © डेफेक्टिव कोड, एलएलसी। सर्वाधिकार सुरक्षित

इस सॉफ़्टवेयर और संबंधित दस्तावेज़ फ़ाइलों (जिसे "सॉफ़्टवेयर" कहा जाता है) की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को बिना किसी शुल्क के समझौता किया जाता है, सॉफ़्टवेयर में बिना किसी रोक-टोक के, जिसमें बिना सीमा के निम्नलिखित अधिकार शामिल हैं: उपयोग करने, कॉपी करने, संशोधित करने, विलय करने, प्रकाशित करने, वितरित करने, उप-लाइसेंस देने और/या सॉफ़्टवेयर की प्रतियों को बेचने के लिए, और उन व्यक्तियों को अनुमति देने के लिए जिन्हें सॉफ़्टवेयर प्रदान किया गया है कि वे ऐसा कर सकें, निम्नलिखित शर्तों के अधीन:

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

सॉफ़्टवेयर "जैसा है" प्रदान किया गया है, बिना किसी प्रकार की वारंटी के, स्पष्ट या अंतर्निहित, जिसमें वाणिज्यिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और अवमानना की वारंटी शामिल नहीं हैं, लेकिन इनमें सीमित नहीं हैं। किसी भी स्थिति में लेखकों या कॉपीराइट धारकों को किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं ठहराया जाएगा, चाहे वह अनुबंध, टॉर्ट या अन्यथा में हो, जो सॉफ़्टवेयर या सॉफ़्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न हो।