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

  1. Supprimez le paquet simplesoftwareio/simple-sqs-extended-client de votre projet.
  2. 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

  1. 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.

  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 la connexion sur sqs. La connexion sqs est 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',
],
],
  1. 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.