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 | 中文

لارفيل SQS الموسع

المقدمة

لارفيل SQS الموسع هو سائق طابور لارفيل تم تصميمه للتغلب على حدود حجم الحمولة في AWS SQS. سيقوم هذا السائق تلقائيًا بتسلسل الحمولات الكبيرة إلى قرص (عادةً S3) ومن ثم فك تسلسلها في وقت التشغيل. استلهمت هذه الحزمة من https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.html.

الانتقال من عميل SQS الموسع البسيط

  1. قم بإزالة حزمة simplesoftwareio/simple-sqs-extended-client من مشروعك.
  2. ثبت حزمة defectivecode/laravel-sqs-extended.

التكوين القديم متوافق مع الحزمة الجديدة. التغيير الوحيد هو اسم الحزمة.

التثبيت

  1. أولاً، قم بإنشاء دلو يحمل جميع حمولات SQS الكبيرة الخاصة بك.

نوصي بشدة باستخدام دلو خاص عند تخزين حمولات SQS. يمكن أن تحتوي الحمولة على معلومات حساسة وينبغي عدم مشاركتها علنًا.

  1. قم بتشغيل composer require defectivecode/laravel-sqs-extended لتثبيت سائق الطابور.

  2. ثم، أضف إعدادات الطابور الافتراضية التالية إلى ملف queue.php الخاص بك.

يجب على مستخدمي Laravel Vapor تعيين اسم الاتصال على sqs. يتم البحث عن الاتصال sqs داخل Vapor Core ولن تعمل هذه المكتبة كما هو متوقع إذا استخدمت اسم اتصال مختلف.

/*
|--------------------------------------------------------------------------
| تكوين طابور SQS على القرص
|--------------------------------------------------------------------------
|
| هنا يمكنك تكوين سائق الطابور SQS على القرص. يشارك جميع خيارات التكوين
| من سائق الطابور SQS المدمج في لارفيل. الخيار الوحيد المضاف هو
| `disk_options` التي تم شرحها أدناه.
|
| always_store: تحدد ما إذا كان يجب تخزين جميع الحمولات على قرص بغض النظر عن حد حجم الطابور.
| cleanup: تحدد ما إذا كانت ملفات الحمولة يجب إزالتها من القرص بمجرد معالجة الوظيفة. ترك
| الملفات يمكن أن يكون مفيدًا لإعادة تشغيل وظائف الطابور لاحقًا لأسباب تتعلق بالتdebug.
| disk: القرص الذي سيتم حفظ حمولات SQS عليه. يجب تكوين هذا القرص في ملف إعدادات Laravel filesystems.php.
| max_size: اختياري. يثبت عتبة النقل على عدد ثابت من البايت. عند إغفاله، يتم قراءة العتبة من
| الطابور نفسه. انظر "عتبة حجم الحمولة" أدناه.
| prefix البادئة (المجلد) لتخزين الحمولات به. هذا مفيد إذا كنت تشارك قرصًا مع طوابير SQS أخرى.
| يسمح استخدام بادئة للأمر queue: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 🥳

عتبة حجم الحمولة

قامت AWS برفع الحد الأقصى للحمولة في SQS من 256 KiB إلى 1 MiB في أغسطس 2025، ولكن MaximumMessageSize هو سمة خاصة بكل طابور — الطوابير التي تم إنشاؤها قبل هذا التغيير تحتفظ بالقيمة القديمة 262144 بايت حتى تقوم برفعها. بدلاً من افتراض أي حد، تقرأ هذه الحزمة السمة من الطابور وتقوم بنقل فقط ما لن يتناسب فعليًا.

تتم معالجة العتبة بالترتيب التالي، وأول تطابق يفوز. يتم تخزين الحمولة على القرص عندما يكون طولها أكبر من أو يساوي العتبة المحسوبة.

الشرط العتبة يقرأ سمة الطابور
always_store هو true يتم تخزين كل حمولة لا
تم تعيين 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 كيلو بايت، لذا فإن رسالة واحدة بحجم 1 ميغا بايت تحسب على أنها 16 طلب. تخزين الحمولات الكبيرة على قرص غالبًا ما يكون الطريق الأرخص.

إرشادات الدعم

شكرًا لاختيارك حزمتنا مفتوحة المصدر! يرجى أخذ لحظة للاطلاع على هذه الإرشادات الخاصة بالدعم. إنها ستساعدك على الاستفادة القصوى من مشروعنا.

دعم مدفوع من المجتمع

مشروعنا مفتوح المصدر مدعوم من مجتمعنا الرائع. إذا كانت لديك أسئلة أو تحتاج إلى مساعدة، فإن StackOverflow وغيرها من الموارد عبر الإنترنت هي أفضل الخيارات لديك.

الأخطاء، وأولوية الميزات

حقيقة إدارة مشروع مفتوح المصدر تعني أنه لا يمكننا معالجة كل خطأ أو طلب ميزة مبلّغ عنه على الفور. نحن نحدد أولويات المشكلات بالترتيب التالي:

1. الأخطاء التي تؤثر على منتجاتنا المدفوعة

الأخطاء التي تؤثر على منتجاتنا المدفوعة ستكون دائمًا أولويتنا القصوى. في بعض الحالات، قد نعمل فقط على معالجة الأخطاء التي تؤثر علينا بشكل مباشر.

2. طلبات السحب من المجتمع

إذا كنت قد حددت خطأ ولديك حل، يرجى تقديم طلب سحب. بعد معالجة المشكلات التي تؤثر على منتجاتنا، نمنح الأولوية الأعلى لهذه الإصلاحات المدفوعة من المجتمع. بمجرد مراجعة الحل والموافقة عليه، سنقوم بدمجه وسنُعطيك الفضل لمساهمتك.

3. الدعم المالي

بالنسبة للمشكلات خارج الفئات المذكورة، يمكنك اختيار تمويل حلها. كل مشكلة مفتوحة مرتبطة بنموذج طلب يمكنك من خلاله المساهمة ماليًا. نحن نحدد أولويات هذه المشكلات بناءً على المبلغ المالي المقدم.

مساهمات المجتمع

تزدهر المصادر المفتوحة عندما يكون المجتمع نشطًا. حتى لو لم تكن تصلح الأخطاء، فكر في المساهمة من خلال تحسينات الكود، أو تحديث الوثائق، أو إنشاء دروس، أو بمساعدة الآخرين في قنوات المجتمع. نحن نشجع بشكل كبير الجميع، كمجتمع، على تقديم الدعم للعمل المفتوح المصدر.

لإعادة التأكيد، ستحظى DefectiveCode بأولوية الأخطاء استنادًا إلى كيفية تأثيرها على منتجاتنا المدفوعة، وطلبات سحب المجتمع، والدعم المالي الذي تم تلقيه للمشكلات.

الترخيص - MIT License

حقوق الطبع والنشر © Defective Code, LLC. جميع الحقوق محفوظة

يتم منح الإذن بموجب هذا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة (الـ"برنامج")، للتعامل في البرنامج دون قيود، بما في ذلك بدون حصر الحقوق في الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والتراخيص الفرعية و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم تقديم البرنامج لهم بذلك، بشرط الالتزام بالشروط التالية:

يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.

يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك ولكن لا تقتصر على ضمانات القابلية للتسويق، والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال، لا يتحمل المؤلفون أو أصحاب حقوق الطبع المسؤولية عن أي مطالبة أو أضرار أو مسؤوليات أخرى، سواء كانت في إطار عقد أو ضرر أو خلاف ذلك، ناشئة عن أو نتيجة عن أو تتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.