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

Uvod

Laravel SQS Extended je Laravel vozač redova koji je osmišljen da zaobiđe ograničenja veličine tereta AWS SQS. Ovaj vozač reda će automatski serijalizovati velike terete na disk (tipično S3) i zatim ih dezirijalizovati u vreme izvođenja. Ovaj paket je inspiraciju pronašao u https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.html.

Migracija sa Simple SQS Extended Klijenta

  1. Uklonite paket simplesoftwareio/simple-sqs-extended-client iz vašeg projekta.
  2. Instalirajte paket defectivecode/laravel-sqs-extended.

Stara konfiguracija je kompatibilna sa novim paketom. Jedina promena je naziv paketa.

Instalacija

  1. Prvo kreirajte bucket koji će sadržavati sve vaše velike SQS terete.

Toplo preporučujemo da koristite privatni bucket kada skladištite SQS terete. Tereti mogu sadržati osetljive informacije i nikada ne bi trebali biti javno deljeni.

  1. Pokrenite composer require defectivecode/laravel-sqs-extended za instalaciju vozača reda.

  2. Zatim, dodajte sledeće podrazumevane postavke reda u vaš queue.php fajl.

Korisnici Laravel Vapora moraju postaviti ime konekcije na sqs. sqs konekcija se traži unutar Vapor Core i ova biblioteka neće raditi kako se očekuje ako koristite drugo ime konekcije.

/*
|--------------------------------------------------------------------------
| SQS Disk Queue Configuration
|--------------------------------------------------------------------------
|
| Ovde možete konfigurisati SQS disk vozač reda. Delimo sve iste
| opcije konfiguracije kao i ugrađeni Laravel SQS vozač reda. Jedina dodatna
| opcija je `disk_options` koja je objašnjena ispod.
|
| always_store: Određuje da li svi tereti treba da se skladište na disku bez obzira na ograničenje veličine reda.
| cleanup: Određuje da li se fajlovi tereta treba ukloniti sa diska nakon obrade posla. Ostavljanje
| fajlova može biti korisno da se ponovo upotrebi red poslova kasnije iz razloga debagovanja.
| disk: Disk na koji se spremaju SQS tereti. Ovaj disk treba da bude konfiguran u vašem Laravel filesystems.php konfiguracionom fajlu.
| max_size: Opcionalno. Postavlja prag za offload na fiksan broj bajtova. Kada se izostavi, prag se čita iz
| samog reda. Vidi "Prag veličine tereta" ispod.
| prefix Prefiks (folder) za skladištenje tereta. Ovo je korisno ako delite disk sa drugim SQS redovima.
| Korišćenje prefiksa omogućava komandi queue:clear da uništi fajlove odvojeno od drugih sqs-disk redova
| koji dele isti 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. Pokrenite vaše redove i uživajte bez brige o SQS-ovom ograničenju tereta 🥳

Prag veličine tereta

AWS je povisio maksimalni SQS teret sa 256 KiB na 1 MiB u avgustu 2025. godine, ali MaximumMessageSize je atribut po redu — redovi kreirani pre te promene zadržavaju staru vrednost od 262144 bajta dok je ne povisite. Umesto da pretpostavljamo bilo koju granicu, ovaj paket čita atribut iz reda i offload-uje samo ono što se zaista ne može uklopiti.

Prag se reševa u sledećem redosledu, i prva podudarnost pobedi. Teret se skladišti na disku kada je njegova dužina veća ili jednaka rešenom pragu.

Uslov Prag Čita atribut reda
always_store je true Svaki teret se skladišti Ne
max_size je postavljen Konfigurisana vrednost Ne
Red izveštava 262144 (pre 2025. podrazumevano) 250000 Da
Red izveštava 1048576 (povišeno na maksimum) 1036432 Da
Atribut ne može biti pročitan 250000 Pokušano jednom

Zadržana margina od 12144 bajta pokriva troškove po poruci, i je veličine tako da red ostavljen na podrazumevanju od 262144 bajta rešava do praga od 250000 bajta korišćenog u ranijim verzijama ovog paketa. Nadogradnja ne menja ponašanje dok ne povisite sopstveno ograničenje reda.

Dozvole

Čitanje atributa zahteva sqs:GetQueueAttributes. Rezultat se kešira u memoriji po redu, tako da ovo košta jedan poziv po redu tokom trajanja procesa umesto jednog poziva po poslu.

Ako atribut ne može biti pročitan — uska IAM politika ili SQS emulator koji to ne implementira — vozač se vraća na prag od 250000 bajta i nastavlja sa slanjem. Postavite max_size da potpuno izbegnete pretragu ako ne želite da dodelite dozvolu.

Povećanje limita reda

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

Napomena: SQS obračunava korišćenje u delovima od 64 KB, tako da se jedna poruka od 1 MiB naplaćuje kao 16 zahteva. Skladištenje velikih tereta na disku je često i dalje jeftiniji put.

Smjernice za podršku

Hvala što ste odabrali naš paket otvorenog koda! Molimo vas da odvojite trenutak da pregledate ove smjernice za podršku. Pomoći će vam da izvučete maksimum iz našeg projekta.

Podrška vođena zajednicom

Naš projekat otvorenog koda pokreće naša sjajna zajednica. Ako imate pitanja ili trebate pomoć, StackOverflow i ostali online resursi su najbolji izbor.

Greške i prioritizacija funkcionalnosti

Stvarnost upravljanja projektom otvorenog koda je da ne možemo odmah riješiti svaku prijavljenu grešku ili zahtjev za funkcionalnošću. Prioritizujemo probleme u sledećem redu:

1. Greške koje utiču na naše plaćene proizvode

Greške koje utiču na naše plaćene proizvode uvijek će biti naš najveći prioritet. U nekim slučajevima, možda ćemo se fokusirati samo na greške koje direktno utiču na nas.

2. Pull zahtjevi zajednice

Ako ste identificirali grešku i imate rešenje, molimo pošaljite pull zahtjev. Nakon problema koji utiču na naše proizvode, sledeći najveći prioritet daju se ovim ispravkama koje pokreće zajednica. Kada se pregledaju i odobre, spojit ćemo vaše rešenje i priznati vaš doprinos.

3. Finansijska podrška

Za probleme izvan pomenutih kategorija, možete se odlučiti da finansijski podržite njihovo rješavanje. Svaki otvoreni problem je povezan s narudžbenicom na kojoj možete financijski doprinijeti. Prioritizujemo ove probleme na osnovu iznosa finansiranja koji je pružen.

Doprinosi zajednice

Otvoreni kod napreduje kada je njegova zajednica aktivna. Čak i ako ne ispravljate greške, razmislite o doprinosu kroz poboljšanja koda, ažuriranja dokumentacije, tutorijale ili pomažući drugima u zajedničkim kanalima. Veoma ohrabrujemo sve, kao zajednicu, da pomognu u podršci radu otvorenog koda.

Ponovo naglašavamo, DefectiveCode će prioritetizovati greške na osnovu njihovog uticaja na naše plaćene proizvode, pull zahtjeve zajednice i finansijsku podršku primljenu za probleme.

Licenca - MIT Licenca

Autorska prava © Defective Code, LLC. Sva prava zadržana

Ovim se dozvoljava, bez naplate, svakoj osobi koja dobije kopiju ovog softvera i pripadajućeg dokumentacionog materijala (u daljem tekstu "Softver"), da se bavi Softverom bez ograničenja, uključujući, ali ne ograničavajući se na prava da koristi, kopira, modifikuje, spaja, objavljuje, distribuira, sublicencira i/ili prodaje kopije Softvera, te da omogući osobama kojima je Softver dostavljen da učine tako, pod sledećim uslovima:

Gore navedena autorska prava i ova dozvola moraju biti uključeni u sve kopije ili bitne delove Softvera.

SOFTVER SE DOSTAVLJA "KAKAV JESTE", BEZ GARANCIJE BILO KAKVE VRSTE, IZRIČITE ILI IMPLICIRANE, UKLJUČUJUĆI, ALI NE OGRANIČAVAJUĆI SE NA GARANCIJE PRODAJE, PRIKLADNOSTI ZA ODREĐENU NAMENU I NEPOŠTOVANJE PRAVA. U NIKAKVOM SLUČAJU AUTORI ILI NOSIOCI AUTORSKIH PRAVA NEĆE BITI ODGOVORNI ZA BILO KAKVE POTRAŽIVANJA, ŠTETE ILI DRUGE OBAVEZE, BEZ OBZIRA NA TO DA LI JE U PITANJU TUŽBA ZBOG UGOVORA, DELIKTA ILI DRUGIH RAZLOGA, PROIZAŠLE IZ, VAN ILI U VEZI SA SOFTVEROM ILI KORIŠĆENJEM ILI DRUGIM TRANSAKCIJAMA U VEZI SA SOFTVEROM.