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 Utvidgad

Introduktion

Laravel SQS Utvidgad är en Laravel ködrivrutin som designades för att kringgå AWS SQS nyttostorleksgränser. Denna ködrivrutin kommer automatiskt att serialisera stora nyttolaster till en disk (vanligtvis S3) och sedan avserialisera dem vid körning. Detta paket har inspirerats av https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.html.

Migration från Enkel SQS Utvidgad Klient

  1. Ta bort paketet simplesoftwareio/simple-sqs-extended-client från ditt projekt.
  2. Installera paketet defectivecode/laravel-sqs-extended.

Den gamla konfigurationen är bakåtkompatibel med det nya paketet. Den enda ändringen är paketnamnet.

Installation

  1. Skapa först en bucket som kommer att hålla alla dina stora SQS nyttolaster.

Vi rekommenderar starkt att du använder en privat bucket när du lagrar SQS nyttolaster. Nyttolaster kan innehålla känslig information och bör aldrig delas offentligt.

  1. Kör composer require defectivecode/laravel-sqs-extended för att installera ködrivrutinen.

  2. Lägg sedan till följande standardköinställningar i din queue.php-fil.

Laravel Vapor-användare måste ställa in anslutningsnamnet till sqs. Anslutningen sqs letas upp inom Vapor Core och detta bibliotek kommer inte att fungera som förväntat om du använder ett annat anslutningsnamn.

/*
|--------------------------------------------------------------------------
| SQS Disk Kökonfiguration
|--------------------------------------------------------------------------
|
| Här kan du konfigurera SQS disk ködrivrutinen. Den delar alla samma
| konfigurationsalternativ som den inbyggda Laravel SQS ködrivrutinen. Det enda tillagda
| alternativet är `disk_options` som förklaras nedan.
|
| always_store: Bestämmer om alla nyttolaster ska sparas på en disk oavsett kögränsen.
| cleanup: Bestämmer om nyttolastfilerna ska tas bort från disken när jobbet har bearbetats. Att lämna
| filerna kvar kan vara användbart för att spela in köjobben senare för felsökningsskäl.
| disk: Den disk där SQS nyttolaster ska sparas. Denna disk bör konfigureras i din Laravel filesystems.php konfigurationsfil.
| max_size: Valfritt. Sätter avlastningströskeln till ett fast antal byte. När den utelämnas läses tröskeln från
| själva kön. Se "Tröskel för nyttostorlek" nedan.
| prefix: Prefixet (mapp) för att lagra nyttolaster. Detta är användbart om du delar en disk med andra SQS-köer.
| Att använda ett prefix gör att kommandot queue:clear kan radera filerna separat från andra sqs-diskstödda köer
| som delar samma 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. Starta dina köer och dra nytta av att du slipper oroa dig för SQS:s nyttolimit 🥳

Tröskel för nyttostorlek

AWS höjde den maximala SQS nyttostorleken från 256 KiB till 1 MiB i augusti 2025, men MaximumMessageSize är en köspecifik attribut — köer som skapades före denna ändring behåller det äldre värdet på 262144 byte tills du höjer det. Istället för att anta något av gränserna, läser detta paket attributet från kön och avlastar endast vad som verkligen inte får plats.

Tröskeln löses i följande ordning, och den första matchningen vinner. En nyttolast lagras på disken när dess längd är större än eller lika med den lösta tröskeln.

Villkor Tröskel Läser köattributet
always_store är true Varje nyttolast lagras Nej
max_size är inställt Det konfigurerade värdet Nej
Kön rapporterar 262144 (det för-2025 standard) 250000 Ja
Kön rapporterar 1048576 (höjd till max) 1036432 Ja
Attributet kan inte läsas 250000 Försökt en gång

Den reserverade friytan på 12144 byte täcker per-meddelande overhead, och är dimensionerad så att en kö som lämnas på 262144 byte standardlösningar motsvarar den 250000 byte tröskel som används av tidigare versioner av detta paket. Uppgradering ändrar inte beteendet förrän du höjer köns egen gräns.

Behörigheter

Att läsa attributet kräver sqs:GetQueueAttributes. Resultatet cachas i minnet per kö, så detta kostar ett samtal per kö under processens livstid istället för ett samtal per jobb.

Om attributet inte kan läsas — en snäv IAM-policy, eller en SQS-emulator som inte implementerar den — återgår drivrutinen till 250000 byte tröskeln och fortsätter med att skicka. Ställ in max_size för att helt hoppa över uppslaget om du hellre vill undvika att ge behörigheten.

Höja en kögräns

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

Observera att SQS mäter användningen i 64 KB klossar, så ett enda 1 MiB meddelande kostar 16 förfrågningar. Att lagra stora nyttolaster på en disk är ofta fortfarande den billigare vägen.

Stödriktlinjer

Tack för att du valde vårt öppna källkodsprojekt! Vänligen ta ett ögonblick för att titta på dessa stödriktlinjer. De kommer att hjälpa dig att få ut det mesta av vårt projekt.

Gemenskapsdriven Stöd

Vårt öppna källkodsprojekt drivs av vår fantastiska gemenskap. Om du har frågor eller behöver hjälp, är StackOverflow och andra online-resurser dina bästa alternativ.

Buggar och Prioritering av Funktioner

Verkligheten av att hantera ett öppet källkodsprojekt betyder att vi inte kan ta itu med varje rapporterad bugg eller funktionsönskemål omedelbart. Vi prioriterar ärenden i följande ordning:

1. Buggar som Påverkar Våra Betalda Produkter

Buggar som påverkar våra betalda produkter kommer alltid att vara vår högsta prioritet. I vissa fall kan vi endast ta itu med buggar som påverkar oss direkt.

2. Gemenskaps Pull Begärningar

Om du har identifierat en bugg och har en lösning, vänligen skicka in en pull-begäran. Efter ärenden som påverkar våra produkter ger vi näst högsta prioritet till dessa gemenskapsdrivna lösningar. När de har granskats och godkänts, kommer vi att sammanfoga din lösning och kreditera ditt bidrag.

3. Ekonomiskt Stöd

För frågor utanför de nämnda kategorierna kan du välja att finansiera deras lösning. Varje öppen fråga är kopplad till ett beställningsformulär där du kan bidra ekonomiskt. Vi prioriterar dessa frågor baserat på det belopp som anges.

Gemenskapsbidrag

Öppen källkod blomstrar när dess gemenskap är aktiv. Även om du inte åtgärdar buggar, överväg att bidra genom kodförbättringar, dokumentationsuppdateringar, handledningar eller genom att hjälpa andra i gemenskapskanaler. Vi uppmuntrar starkt alla, som en gemenskap, att hjälpa till att stödja arbetet med öppen källkod.

För att upprepa, kommer DefectiveCode att prioritera buggar baserat på hur de påverkar våra betalda produkter, gemenskaps pull-begärningar, och det ekonomiska stöd som erhållits för problem.

Licens - MIT Licens

Copyright © Defective Code, LLC. Alla rättigheter förbehålles

Härmed beviljas tillstånd, kostnadsfritt, till varje person som erhåller en kopia av denna programvara och tillhörande dokumentationsfiler (”Programvaran”), att hantera Programvaran utan begränsningar, inklusive utan begränsning rätten att använda, kopiera, modifiera, sammanfoga, publicera, distribuera, underlicensiera och/eller sälja kopior av Programvaran, och att tillåta personer som Programvaran tillhandahålls till att göra det, med förbehåll för följande villkor:

Den ovanstående copyrightnotisen och denna tillståndsnotis ska inkluderas i alla kopior eller väsentliga delar av Programvaran.

PROGRAMVARAN TILLHANDAHÅLLS "I BEFINTLIGT SKICK", UTAN NÅGON SOM HELST GARANTI, VARE SIG UTTRYCKLIG ELLER UNDERFÖRSTÅDD, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIER FÖR SÄLJBARHET, LÄMPLIGHET FÖR ETT BESTÄMT ÄNDAMÅL OCH INTE KRÄNKNING. UNDER INGA OMSTÄNIGHETER SKA FÖRFATTARNA ELLER COPYRIGHTINNEHAVARNA ANSVARA FÖR NÅGON FORDRAN, SKADOR ELLER ANNAN ANSVARSSKYLDIGHET, VARE SIG I EN RÄTTSLIG ÅTGÄRD, SKADESTÅND ELLER ANNAT, SOM UPPSTÅR FRÅN, GENOM ELLER I SAMBAND MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA AFFÄRER I PROGRAMVARAN.