convenia/pigeon
Convenia Pigeon is a Laravel/PHP package for adding message-based communication to your application. It offers a simple, configurable API for publishing and consuming messages, helping teams build decoupled services and reliable workflows with minimal boilerplate.
PIGEON_SKIP_AUTO_DECLARATION turns a hidden runtime side effect into an explicit architectural choice. Teams can now decide who owns AMQP topology — the application (default, zero-config, developer-friendly) or the platform/IaC layer (Terraform, CloudFormation, Helm charts, broker operator). This is a roadmap-relevant decision, not just a config flag.dispatch(), queue(), exchange(), routing() or events() call. Turning it off reduces round-trips per publish and can materially cut broker connection overhead and latency on high-throughput paths — a lever for scaling conversations without re-architecting.true locally/CI and false… rather, true for convenience and set PIGEON_SKIP_AUTO_DECLARATION=true in staging/production where topology is pre-provisioned. One codebase, per-environment behavior, configured purely via .env.queue.declare / exchange.declare.Adopt when:
php-amqplib wiring — publishing, consuming, queue/exchange/routing binding, and event integration are already abstracted..env, facades/fluent API, Artisan-driven consumers) rather than a generic PHP AMQP client.PIGEON_SKIP_AUTO_DECLARATION escape hatch for environments where infrastructure-as-code owns the broker.Look elsewhere / proceed with caution when:
PIGEON_SKIP_AUTO_DECLARATION=true, publishing or consuming against a missing queue/exchange raises a broker error rather than being silently created. This shifts a class of failures from "silently self-healing" to "loud and immediate." That is usually desirable in production, but it means your deploy pipeline must guarantee topology exists before the app starts; otherwise you trade a network cost for a 404-style outage at first message. Pair the flag with a deployment-order/health-check decision.To executives (one paragraph):
Pigeon v3.2.0 ships a single, low-risk configuration flag, PIGEON_SKIP_AUTO_DECLARATION, that lets applications stop silently creating RabbitMQ queues and exchanges on the fly and instead connect to topology provisioned by our infrastructure pipeline. It is off by default and fully backward compatible — nothing changes unless we opt in. For us it is a governance and efficiency lever: it aligns messaging with infrastructure-as-code, removes an implicit broker-modification behavior that security and audit reviews tend to flag, and reduces per-message network chatter in high-volume paths. No migration, no rewrite, no downtime — a config line and a deploy-order check.
To engineering:
pigeon.skip_auto_declaration backed by PIGEON_SKIP_AUTO_DECLARATION (default false, so a no-op upgrade).Driver's skipAutoDeclaration() guard suppresses queueDeclare() / exchange_declare() inside queue(), exchange(), and routing(); the value is validated as a boolean with a clear exception on misconfiguration.docs/ADVANCED.md "Skipping Auto Declaration", docs/INSTALLATION.md), changelog entry under Unreleased, and unit coverage in tests/Unit/DriverTest.php for both the skip path and the boolean-validation error.How can I help you explore Laravel packages today?