palpalani/laravel-sqs-queue-json-reader
A Laravel package for reading JSON messages from AWS SQS queues. It helps decode and handle SQS queue payloads in Laravel applications, making it easier to consume JSON-based messages from Amazon Simple Queue Service.
Release delta (0.6.0): one behavioral fix (#56 — check whether Laravel already deleted the SQS message before the package attempts deletion), one framework-compatibility addition (Laravel 13.x support, #54), and eleven CI/dependency bumps (GitHub Actions majors, ramsey/composer-install 3→4, Pint action). There are no documented API removals or deprecations, but 0.x versioning means minor releases are not contractually non-breaking — the changelog is the only guarantee.
Architecture fit. This is a narrow, single-purpose adapter: it lets a Laravel queue worker consume JSON messages from an SQS queue whose bodies were not produced by Laravel's own job serializer. That makes it a boundary/anti-corruption layer for polyglot or legacy producers (other services, Lambda, third-party integrations) writing into SQS. It is deliberately not a general messaging abstraction — no schema registry, no routing DSL, no multi-transport support. If your need is exactly "consume foreign-produced JSON from SQS inside Laravel," the fit is tight and the blast radius is small. If your need is broader event infrastructure, this is one component, not a platform, and you should not let it accrete responsibilities.
Integration feasibility. Low surface area, which is the main argument in favor. Expect composer install, configuration publication, definition of a queue connection plus a consumer/job mapping from raw payload to application work, and worker invocation. Two things should be proven in a short spike rather than assumed: (a) the payload-to-job mapping mechanism and how malformed or schema-drifted messages are surfaced; (b) whether the package composes cleanly with the native sqs driver in the same application, so native Laravel queues and foreign-message queues can coexist during transition.
Technical risk.
InvalidParameterValue-style errors) but it changes deletion semantics, and the reviewer must confirm whether a suppressed or failed delete results in redelivery (at-least-once duplicate processing — usually acceptable) versus silent loss (not acceptable). Test this explicitly rather than inferring from the PR title.actions/checkout 4→6 and upload-artifact 5→7 skipped majors within this window; ramsey/composer-install 3→4 is build-only. None affect runtime, but they indicate the release is largely automated maintenance rather than a feature milestone.Key questions.
composer.json for 0.6.0, and does it drop any version we currently run?failed_jobs, retry/backoff, queue:retry), or does it own its own failure handling?Bus::batch), and rate limiting compatible, or does the non-native message shape bypass them?Stack fit. Appropriate for a Laravel service that already runs queue workers and needs to drain an SQS queue populated by non-Laravel producers. It assumes you are comfortable operating SQS directly (IAM permissions for ReceiveMessage/DeleteMessage/GetQueueAttributes, DLQ and redrive policy, visibility timeout tuning). It is a poor fit if the team has no SQS operational experience, or if the same payloads could instead be normalized by the producer into Laravel's native job envelope — that would remove the dependency entirely.
Migration path. Greenfield: add a new queue connection alongside existing ones; existing native queues are untouched, so adoption is additive and reversible by config. Brownfield: run dual-stack — point only the foreign-producer queues at this connector, leave native Laravel queues on the stock sqs driver, and migrate one queue at a time. Avoid rewriting native queues to route through this package "for consistency"; that trades a supported first-party path for a 0.x dependency.
Compatibility. Laravel 13 support (#54) is the headline and the reason this release is mandatory for teams tracking the framework upgrade — without it, 0.6.0 becomes a blocker on the Laravel 13 migration. Teams pinned to older majors should treat 0.6.0 as optional-but-recommended for the delete guard. Confirm the PHP constraint and any transitive dependency changes before bumping.
Sequencing.
composer.json; capture a baseline of queue behavior (throughput, duplicates, failures) for one representative queue.Maintenance. Low code footprint, but it sits in the delivery critical path, so it inherits on-call attention. Dependency hygiene looks automated (Dependabot plus auto-commit action), which is reassuring for security patching but also means releases are frequent and mostly mechanical — pin exact versions and batch upgrades deliberately rather than tracking ^0.6. Expect roughly one framework-alignment release per Laravel major; budget for that review each cycle.
Support. No vendor, no SLA. Upstream is GitHub issues plus community PRs. The 0.6.0 mix — a community bugfix and an automated compatibility PR — suggests a maintained but not staffed project. Operationally this means internal ownership: someone on the team must be able to read the package source and reason about the delete path. That is a realistic ask given the size, but assign it explicitly.
Scaling. Throughput scales the way SQS does — add workers, tune batch size and long polling. The package itself is not the bottleneck. The constraints are configuration-driven: visibility timeout must exceed worst-case job duration, DLQ redrive policy must exist before go-live, and worker concurrency must respect any downstream rate limits.
Failure modes to instrument.
Alert on DLQ depth, oldest-message age, delete-failure rate, and decode-error rate from day one.
Ramp-up. A Laravel developer can be productive in half a day; the integration code is small. The real ramp-up is SQS literacy — visibility timeout, receipt handles, at-least-once delivery, DLQ redrive — which is where incidents actually originate. Plan a short internal write-up covering the deletion contract and the local-stack test recipe, and treat that document as a prerequisite for production cutover rather than an afterthought.
Recommendation. Adopt 0.6.0 for its intended narrow purpose, gated on a delete-path spike. The Laravel 13 support makes it the required version if a framework upgrade is on the roadmap; the delete guard is a genuine reliability improvement worth taking either way. Keep scope tight, pin the version, and do not let it replace the native SQS driver for queues Laravel itself produces.
How can I help you explore Laravel packages today?