Download the PHP package hollyphat/event-bus without Composer
On this page you can find all versions of the php package hollyphat/event-bus. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download hollyphat/event-bus
More information about hollyphat/event-bus
Files in hollyphat/event-bus
Package event-bus
Short Description Shared Redis Streams event bus for distributed Laravel applications.
License MIT
Informations about the package event-bus
hollyphat/event-bus
Shared Redis Streams event bus for distributed Laravel applications.
One stream (name configurable, defaults to events). Each backend runs events:consume with its own consumer group. Every group sees every message; each app only handles events it registered. Data-sync catalogs are added later in those apps — this package is only the transport.
Install
Env (same Redis for all apps)
Per-app REDIS_PREFIX would hide keys from each other. This package uses connection events with an empty prefix.
PLATFORM_EVENTS_SOURCE and PLATFORM_EVENTS_GROUP should be set to a unique name per app (e.g. its own slug). GROUP must match the send($target, ...) name other services use.
PLATFORM_EVENTS_STREAM names the Redis stream all apps share — every app talking to each other must set it to the same value. It defaults to events; set it explicitly if you want a project-specific name (e.g. myapp:events).
Leave PLATFORM_EVENTS_ENABLED=false until a sync plan is implemented. sendAndWait throws if publishing is off; broadcast / send no-op.
Receive — $listen on this backend only
This map is not global. It is “events this process should run.” Other backends have their own provider. Add a row when this app should handle a new event.
Register the provider in bootstrap/providers.php. Each handler implements Hollyphat\EventBus\Contracts\HandlesEvent:
Worker:
Supervisor (next to queue:work):
Directed messages (targets: ["app-b"]) are skipped by other groups. Broadcast (targets: ["*"]) is offered to every group; only registered listeners run.
Publish
Do not call sendAndWait inside the consume process that must answer that command (deadlock). The worker is a separate process.
Envelope
targets: ["*"] = broadcast. Redis 6.2+ (XAUTOCLAIM). Failed handlers are not ACK’d so another consumer can claim them.
Tests
No live Redis required (stream client is faked).
All versions of event-bus with dependencies
illuminate/console Version ^12.0
illuminate/contracts Version ^12.0
illuminate/redis Version ^12.0
illuminate/support Version ^12.0