rxnet/eventstore-client
RxNet EventStore Client integrates EventStoreDB with Laravel, making event sourcing practical in PHP. Append and read events, work with streams, and build event-driven applications through a simple, framework-friendly client API.
Architecture fit: This is not a Laravel package; it is a low-level asynchronous EventStore client with ReactiveX/RxPHP-style APIs. It fits only when EventStoreDB is already a strategic part of the architecture and Laravel is acting as a producer/consumer of events. It does not provide Laravel-native configuration, service providers, facades, migrations, event-sourcing aggregates, projections, or queue integration. Treat it as infrastructure plumbing behind an internal adapter, not as an application framework.
Integration feasibility: Feasible for append/read/subscribe workflows in long-running CLI workers, queue workers, or dedicated daemon processes. It is a poor fit for standard PHP-FPM request lifecycles because reactive/event-loop clients can block, leak, or behave unpredictably per request. Integration effort is moderate to high because the team must own Composer compatibility, connection lifecycle, serialization, retries, and error mapping.
Technical risk: High. The repository is unknown, adoption is low, and the last release was March 2019. That creates material risk around PHP 8+ compatibility, EventStoreDB API compatibility, RxPHP/ReactPHP dependency conflicts, security patching, and Laravel version support. Modern EventStoreDB versions use gRPC and newer client patterns; an older client may target legacy HTTP/Atom APIs or older server versions. License is permissive, but provenance and maintainability are unresolved.
Key questions:
Stack fit: Use the client only as a transport adapter. Define application-level interfaces such as EventStoreWriter, EventStoreReader, and SubscriptionRunner; keep RxPHP types and EventStore-specific exceptions out of domain and application code. Run consumers in Laravel queue workers, console commands, or supervised long-running processes rather than web requests.
Migration path: Start with a time-boxed proof of concept against the exact EventStoreDB version in scope. Validate append, read, subscription, reconnect, auth/TLS, and duplicate handling. If successful, wrap the client in Laravel services with configuration, health checks, structured logging, and metrics. If the POC fails, fall back to direct HTTP calls, a maintained fork, or a different EventStoreDB client before committing application code.
Compatibility: Pin the package and all transitive dependencies. Test against the target Laravel and PHP versions in CI, including Composer resolution under the application’s existing dependency graph. Verify container images, EventStoreDB server version, TLS certificates, and credentials. Avoid assuming Laravel auto-discovery; expect manual binding and configuration.
Sequencing:
Maintenance: High. The package is effectively unmaintained unless the organization adopts it. Budget for a fork, dependency upgrades, PHP compatibility patches, and EventStoreDB protocol changes. Track it in the SBOM and vulnerability-management process.
Support: Low external support. There is no credible vendor backing indicated, low community adoption, and unknown repository provenance. Internal ownership must be explicit before production use.
Scaling: Possible through horizontal consumers and partitioned subscriptions, but scaling depends on EventStoreDB subscription semantics, checkpoint storage, and worker coordination. Long-running reactive PHP processes require memory limits, restart policies, backpressure handling, and careful concurrency tuning. It is not a natural fit for autoscaled PHP-FPM web tiers.
Failure modes: Expect reconnect storms, dropped or duplicated events, checkpoint loss, subscription lag, unhandled promise/reactive errors, memory growth in long-lived workers, TLS/auth failures, and protocol incompatibility after EventStoreDB upgrades. Laravel request timeouts and worker recycling can interrupt subscriptions unless isolated in dedicated processes.
Ramp-up: Steep. The team needs EventStoreDB concepts, event-sourcing patterns, ReactiveX/RxPHP mental models, and long-running PHP worker operations. A short spike is insufficient; plan for a deliberate enablement phase, reference implementation, runbooks, and on-call ownership before production adoption.
How can I help you explore Laravel packages today?