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 charges utiles volumineuses sur un disque (typiquement S3) puis les désérialiser au moment de l'exécution. Ce paquet s'est inspiré de https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.html.
Migration depuis le Client Simple SQS Extended
- Supprimez le paquet
simplesoftwareio/simple-sqs-extended-clientde votre projet. - Installez le paquet
defectivecode/laravel-sqs-extended.
La vieille configuration est rétrocompatible avec le nouveau paquet. Le seul changement est le nom du paquet.
Installation
- Tout d'abord, créez un bucket qui contiendra toutes vos grandes charges utiles SQS.
Nous vous recommandons fortement d'utiliser un bucket privé lors du stockage des charges utiles SQS. Les charges utiles peuvent contenir des informations sensibles et ne devraient jamais être partagées publiquement.
-
Exécutez
composer require defectivecode/laravel-sqs-extendedpour installer le pilote de file d'attente. -
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 la connexion sur
sqs. La connexionsqsest recherchée au sein de 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 sur disque. 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 sont expliquées ci-dessous.|| always_store: Détermine si toutes les charges utiles doivent être stockées sur un disque,| quelle que soit la limite de taille de la file d'attente.| cleanup: Détermine si les fichiers de charge utile 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 pour enregistrer les charges utiles SQS. Ce disque doit être configuré| dans votre fichier de configuration Laravel filesystems.php.| max_size: Optionnel. 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. Utiliser un préfixe| permet à la commande queue:clear de détruire les fichiers séparément d'autres| files d'attente supportées par 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', ],],
- Démarrez vos files d'attente et profitez-en sans vous soucier de la limite de charge utile de SQS 🥳
Seuil de taille de charge utile
AWS a porté 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 l'ancienne valeur de 262144 octets jusqu'à ce que vous l'augmentiez. Plutôt que de supposer une limite quelconque, ce paquet lit l'attribut de la file d'attente et décharge uniquement ce qui ne pourra pas vraiment 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 signale 262144 (l'ancien défaut de 2025) |
250000 | Oui |
La file d'attente signale 1048576 (élevée au maximum) |
1036432 | Oui |
| Impossible de lire l'attribut | 250000 | Tenté une fois |
La marge réservée de 12144 octets couvre les frais généraux par message, et est dimensionnée de sorte qu'une file d'attente laissée à la valeur par défaut de 262144 octets aboutisse au seuil de 250000 octets utilisé par les versions antérieures de ce paquet. La mise à niveau ne change pas le comportement tant que vous n'augmentez pas la limite de la file d'attente.
Permissions
Lire 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 pour la durée du processus plutôt qu'un appel par travail.
Si l'attribut ne peut pas être lu — une politique IAM restrictive, ou un émulateur SQS qui ne l'implémente pas — le pilote retombe sur le seuil de 250000 octets et continue à envoyer. Définissez max_size pour ignorer complètement la recherche si vous ne souhaitez 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 seul message de 1 Mo est facturé comme 16 requêtes. Stocker de grandes charges utiles sur un disque est souvent encore la voie la moins coûteuse.
Directives de Support
Merci d'avoir choisi notre paquet open source ! Veuillez prendre un moment pour consulter ces directives de support. Elles vous aideront à tirer le meilleur parti de notre projet.
Support Axé sur la Communauté
Notre projet open-source est alimenté par notre incroyable communauté. Si vous avez des questions ou avez besoin d'aide, StackOverflow et d'autres ressources en ligne sont vos meilleures options.
Bugs et Priorisation des Fonctionnalités
La réalité de la gestion d'un projet open-source signifie que nous ne pouvons pas traiter tous les bugs ou demandes de fonctionnalités immédiatement. Nous priorisons les problèmes dans l'ordre suivant :
1. Bugs Affectant Nos Produits Payants
Les bugs qui impactent nos produits payants seront toujours notre priorité absolue. Dans certains cas, nous ne traiterons peut-être que les bugs qui nous affectent directement.
2. Demandes de Tirage de la Communauté
Si vous avez identifié un bug et avez une solution, veuillez soumettre une demande de tirage. Après les problèmes affectant nos produits, nous accordons la prochaine priorité la plus élevée à ces corrections pilotées par la communauté. Une fois examinée et approuvée, nous fusionnerons votre solution et créditerons votre contribution.
3. Soutien Financier
Pour les problèmes en dehors des catégories mentionnées, vous pouvez choisir de financer leur résolution. Chaque problème ouvert est lié à un bon de commande où vous pouvez contribuer financièrement. Nous priorisons ces problèmes en fonction du montant du financement fourni.
Contributions de la Communauté
L'open-source prospère lorsque sa communauté est active. Même si vous ne réparez pas de bugs, envisagez de contribuer par des améliorations de code, des mises à jour de documentation, des tutoriels, ou en aidant les autres dans les canaux communautaires. Nous encourageons vivement tout le monde, en tant que communauté, à aider à soutenir le travail open-source.
Pour réitérer, DefectiveCode priorisera les bugs en fonction de leur impact sur nos produits payants, des demandes de tirage de la communauté, et du soutien financier reçu pour les problèmes.
Licence - Licence MIT
Copyright © Defective Code, LLC. Tous droits réservés
La permission est par la présente accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le "Logiciel"), de traiter le Logiciel sans restriction, y compris sans limitation les droits d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier, et/ou de vendre des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avertissement de copyright ci-dessus et cet avis de permission doivent être inclus dans toutes les copies ou portions substantielles du Logiciel.
LE LOGICIEL EST FOURNI "EN L'ÉTAT", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU TACITE, Y COMPRIS MAIS SANS S'Y LIMITER AUX GARANTIES DE COMMERCIALITÉ, D'ADAPTATION À UN OBJECTIF PARTICULIER ET DE NON CONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU DÉTENTEURS DE DROITS D'AUTEUR NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RECLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UN CONTRAT, DUN DÉLIT OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU AUTRES TRANSACTIONS DANS LE LOGICIEL.