- What Laravel and PHP versions does ianfoxdev/outbox support?
- The release notes do not publish an explicit Laravel and PHP compatibility matrix, so confirm the constraints in the package composer.json before adopting it. Test against your fleet's current and next-year baseline versions rather than assuming support. Because the PHP API is frozen at the 1.0.0 release candidate, version support is worth validating early in evaluation.
- How do I install ianfoxdev/outbox in a Laravel application?
- Install it with Composer and publish or run the migration that creates the outbox table. Configure the relay settings, then run the Go relay as a supervised long-running process alongside your Laravel app. The integration touches schema migrations, process supervision, and observability, so plan those as separate tasks rather than a single install step.
- How is this transactional outbox different from Debezium?
- This package writes outbox rows in the same database transaction as your business data, and a separate Go relay reads those rows and publishes them to Kafka. Debezium instead uses change data capture through Kafka Connect, which means running and operating a Connect cluster and connectors. The outbox approach here avoids CDC infrastructure but requires you to run and monitor the relay yourself.
- Which databases are supported, and does partitioning require a specific engine or version?
- The available materials do not state a supported database matrix, so check the Composer constraints and documentation for your engine. Partitioning is named as one of the frozen surfaces in the 1.0.0 contract, meaning the partition strategy is effectively permanent for the 1.x line. Confirm whether your database version supports the required partitioning scheme before committing.
- How should I run and monitor the Go relay in production?
- The relay is a continuously running process, so supervise it with your existing process manager or container orchestrator and add restart and alerting policies. The package exposes metrics and endpoints that need to be scraped and secured by your observability stack. Treat relay supervision and metrics wiring as distinct operational owners in your rollout plan.
- Does ianfoxdev/outbox guarantee exactly-once delivery?
- No. Outbox relays retry, so delivery is at-least-once and consumers must be idempotent. Use deduplication keys or equivalent safeguards on the consumer side to handle repeated messages safely. This is a consumer obligation rather than a package defect, but it is the most common source of production incidents in outbox rollouts.
- Is ianfoxdev/outbox production ready at v1.0.0-rc1?
- The rc1 release is explicitly identical to 0.5.0, with no new code beyond a freeze declaration, so it carries the same undiscovered defects. The maintainer has asked for field reports, which suggests at least one patch cycle before 1.0.0. It is close to a GA commitment for planning purposes, but validate it against your own integration before using it on payment or order paths.
- Can I change the partitioning strategy after adopting the package?
- Partitioning is one of the surfaces frozen until 1.0.0 and treated as a contract for the 1.x line. Choosing the wrong strategy, or skipping partitioning entirely, becomes a migration project later rather than a configuration change. Decide your partition approach carefully during evaluation.
- How does the relay's lock key affect horizontal scaling and throughput?
- The lock key is frozen in the 1.0.0 contract, so the relay concurrency model is now fixed. Determine whether the design allows a single active relay or sharding by lock key before you plan throughput. If you need more capacity than the packaged locking supports, you cannot expect to get it through a minor upgrade.
- What are the alternatives to ianfoxdev/outbox for Laravel transactional outbox implementations?
- Alternatives include Debezium with Kafka Connect for change data capture, or building a custom outbox table and relay inside your Laravel application. The trade-off is operational overhead: CDC adds Connect infrastructure, while a custom relay adds code you own and maintain. This package sits in between by providing the outbox table and a separate Go relay without Debezium.