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

Introduction

Laravel SQS Extended est un pilote de file d'attente Laravel conçu pour contourner les limites de taille de charge utile d'AWS SQS. Ce pilote de file d'attente va automatiquement sérialiser les grosses charges utiles sur un disque (généralement S3) et ensuite les désérialiser à l'exécution. Ce package s'est inspiré de https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.html.

Migration depuis le client Simple SQS Extended

  1. Supprimez le package simplesoftwareio/simple-sqs-extended-client de votre projet.
  2. Installez le package defectivecode/laravel-sqs-extended.

La configuration ancienne est rétrocompatible avec le nouveau package. Le seul changement est le nom du package.

Installation

  1. Créez d'abord un bucket qui contiendra toutes vos grosses charges utiles SQS.

Nous vous recommandons vivement d'utiliser un bucket privé pour stocker les charges utiles SQS. Les charges utiles peuvent contenir des informations sensibles et ne doivent jamais être partagées publiquement.

  1. Exécutez composer require defectivecode/laravel-sqs-extended pour installer le pilote de file d'attente.

  2. Ensuite, ajoutez les paramètres de file d'attente par défaut suivants à votre fichier queue.php.

Les utilisateurs de Laravel Vapor doivent définir le nom de connexion sur sqs. La connexion sqs est recherchée dans Vapor Core et cette bibliothèque ne fonctionnera pas comme prévu si vous utilisez un nom de connexion différent.

/*
|--------------------------------------------------------------------------
| Configuration de la file d'attente SQS Disk
|--------------------------------------------------------------------------
|
| Ici vous pouvez configurer le pilote de file d'attente SQS disk. Il partage toutes les mêmes
| options de configuration que le pilote de file d'attente SQS intégré de Laravel. La seule option ajoutée
| est `disk_options` qui est expliquée ci-dessous.
|
| always_store : Détermine si toutes les charges utiles doivent être stockées sur un disque indépendamment de la limite de taille de la file d'attente.
| cleanup : Détermine si les fichiers de charges utiles doivent être supprimés du disque une fois le travail traité. Laisser les
| fichiers peut être utile pour rejouer les travaux de la file d'attente plus tard pour des raisons de débogage.
| disk : Le disque où enregistrer les charges utiles SQS. Ce disque doit être configuré dans votre fichier de configuration filesystems.php de Laravel.
| max_size : Facultatif. Fixe le seuil de déchargement à un nombre fixe d'octets. Lorsqu'il est omis, le seuil est lu à partir
| de la file d'attente elle-même. Voir "Seuil de taille de charge utile" ci-dessous.
| prefix : Le préfixe (dossier) pour stocker les charges utiles. Cela est utile si vous partagez un disque avec d'autres files d'attente SQS.
| L'utilisation d'un préfixe permet à la commande queue:clear de détruire les fichiers séparément des autres files d'attente
| basées sur des disques SQS partageant le même disque.
|
*/
'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. Lancez vos files d'attente et profitez-en sans vous soucier de la limite de charge utile d'SQS 🥳

Seuil de taille de charge utile

AWS a relevé la taille maximale de charge utile SQS de 256 Ko à 1 Mo en août 2025, mais MaximumMessageSize est un attribut par file d'attente — les files d'attente créées avant ce changement conservent la valeur de 262144 octets jusqu'à ce que vous l'augmentiez. Plutôt que de supposer une limite, ce package lit l'attribut de la file d'attente et décharge uniquement ce qui ne peut vraiment pas tenir.

Le seuil est résolu dans l'ordre suivant, et la première correspondance l'emporte. Une charge utile est stockée sur le disque lorsque sa longueur est supérieure ou égale au seuil résolu.

Condition Seuil Lit l'attribut de la file d'attente
always_store est true Chaque charge utile est stockée Non
max_size est défini La valeur configurée Non
La file d'attente indique 262144 (la valeur par défaut avant 2025) 250000 Oui
La file d'attente indique 1048576 (élevée au maximum) 1036432 Oui
L'attribut ne peut pas être lu 250000 Tentative unique

La marge réservée de 12144 octets couvre le surcoût par message et est dimensionnée de sorte qu'une file d'attente restant à la valeur par défaut de 262144 octets résolve au seuil de 250000 octets utilisé par les anciennes versions de ce package. La mise à niveau ne change pas le comportement tant que vous ne rehaussez pas la propre limite de la file d'attente.

Permissions

La lecture de l'attribut nécessite sqs:GetQueueAttributes. Le résultat est mis en cache en mémoire par file d'attente, donc cela coûte un appel par file d'attente pendant toute la durée du processus, plutôt qu'un appel par travail.

Si l'attribut ne peut pas être lu — une politique IAM étroite ou un émulateur SQS qui ne l'implémente pas — le pilote revient à la limite de 250000 octets et continue l'envoi. Définissez max_size pour passer complètement la recherche si vous préférez ne pas accorder la permission.

Augmenter la limite d'une file d'attente

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

Notez que SQS mesure l'utilisation par morceaux de 64 Ko, donc un message unique de 1 Mo est facturé comme 16 demandes. Stocker de grosses charges utiles sur un disque est souvent le chemin le moins coûteux.

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

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

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

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

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

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

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

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

2. طلبات السحب الخاصة بالمجتمع

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

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

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

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

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

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

Lizenz - MIT Lizenz

Copyright © Defective Code, LLC. Alle Rechte vorbehalten

Hiermit wird kostenlos die Erlaubnis erteilt, an jede Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, mit der Software ohne Einschränkung umzugehen, einschließlich, aber nicht beschränkt auf die Rechte, die Software zu nutzen, zu kopieren, zu modifizieren, zu fusionieren, zu veröffentlichen, zu verteilen, Unterlizenzen zu erteilen und/oder Kopien der Software zu verkaufen, und Personen, denen die Software zur Verfügung gestellt wird, zu gestatten, dies zu tun, unter der Bedingung der folgenden Bedingungen:

Der obige Copyright-Hinweis und dieser Erlaubnishinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.

DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE GARANTIE, WELCHER ART, AUSDRÜCKLICH ODER IMPLIZIT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND KEINEN RECHTSBRUCH. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-RECHTHABER FÜR IRGENDEINEN ANSPRUCH, SCHÄDEN ODER SONSTIGE HAFTUNG HAFTBAR, UNABHÄNGIG DAVON, OB IN EINER KLAGE AUS VERTRAG, DELIKT ODER SONSTIGEM, ENTSTEHEND AUS, IM HINBLICK AUF ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN TRANSAKTIONEN IN DER SOFTWARE.