laravel-distributable-stream-redis maintained by mk-josias
Description
Redis Streams driver for the events of mk-josias/laravel-distributable: one ordered stream, a consumer group per service, failed entries retried before later ones, or dropped.
Author
Last update
2026/10/18 15:51
(dev-main)
License
Downloads
3
Tags
Redis Event Stream
The redis events driver of laravel-microservices, on Redis Streams.
composer require mk-josias/laravel-distributable-stream-redis
Its provider is discovered and registers the driver. The shipped default stream uses it once
DISTRIBUTABLE_STREAM_DRIVER=redis:
// config/distributable.php
'default' => [
'driver' => env('DISTRIBUTABLE_STREAM_DRIVER', 'array'),
// a database.redis connection, null for `default`
'connection' => env('DISTRIBUTABLE_STREAM_CONNECTION'),
// the one Redis stream every service writes to
'key' => 'distributable:events',
// how long a read waits, in ms
'block' => 5_000,
// entries per read
'count' => 50,
// after how long a dead consumer's pending entries are taken back, in ms
'claim_after' => 60_000,
// block: a failed entry is retried before later ones; skip: later ones go on, the failed one is dropped
'on_failure' => 'block',
],
| What it guarantees | |
|---|---|
| Order | every service writes to one Redis stream, so its entries keep the order they were published in |
| A cursor per consumer | one consumer group per consuming service: a new consumer disturbs none of the others |
| At least once | an entry is acknowledged after its handlers succeed; an unacknowledged one comes back |
| After a failure | block: the failed entry is retried before any later one; skip: later ones go on, the failed one is dropped |
It implements ArchivesStreams (stream:export, and --acknowledged), ReportsAcknowledgements
(guard_cleanup => acknowledge) and TrimsStreams (stream:trim). Nothing is trimmed on write:
run stream:trim on a schedule.
Needs Redis 5 or later, with PhpRedis or Predis.