rabbitevents/redis-transport
A Redis pub/sub transport driver for RabbitEvents, letting Laravel applications broadcast and handle events over Redis instead of RabbitMQ. Swap brokers with minimal config changes while keeping the same event API and payloads.
rabbitevents/foundation ^10.0. If you’re still on RabbitEvents 9, stay on the 0.0.x line.config/rabbitevents.php). Set the Redis connection, consumer group name, and default queue. Confirm the queue names you’ll use—each queue now maps to a shared topic stream plus a direct stream rabbitevents:queue:{queue} and a failed stream {queue}.failed.rabbitevents:failed command. These tell you how retries, requeues, and failures are isolated per queue.php artisan rabbitevents:listen --queue=default). Then deliberately fail a job and verify it shows up via php artisan rabbitevents:failed.rabbitevents:queue:{queue} rather than the shared topic stream. This lets you scale consumer groups independently and prevents retry storms in one queue from affecting others.php artisan rabbitevents:failed to list failed messages, rabbitevents:retry {id} to retry, rabbitevents:forget {id} to delete, and rabbitevents:flush to clear. Failed messages live in {queue}.failed (generated by makeFailedQueue()).requeue() and reject(requeue: true) now re-deliver the message while preserving order, instead of leaving it stuck in the Pending Entries List. Use these for transient failures where you want a retry without immediately marking the job as failed.--sleep (default 5) is ignored—retries happen immediately. If you need backoff, implement it outside the queue (e.g., dispatch a delayed job to another queue/driver, or schedule a re-dispatch command).XLEN, XINFO GROUPS, and XPENDING to monitor stream lengths, consumer group lag, and pending entries. Add rabbitevents:failed to your ops runbook.--sleep is a no-op on Redis. Don’t assume Laravel’s backoff config works here. For exponential backoff, use a scheduled job or a separate delayed queue/driver.XPENDING) and use XCLAIM if a consumer dies. The package handles requeue/reject better, but operational vigilance helps.rabbitevents:queue:{queue} and {queue}.failed. Avoid queue names with characters that could clash with Redis key conventions. If you override makeFailedQueue(), keep the naming consistent.redis-cli to inspect streams: XLEN rabbitevents:queue:default, XINFO GROUPS rabbitevents:queue:default, XPENDING rabbitevents:queue:default <group>. Also check Laravel logs for consumer errors. rabbitevents:failed is your first stop for failed messages.makeFailedQueue() can be overridden in a custom queue class if you need a different failed queue naming scheme. You can also extend the driver to add a delay mechanism (e.g., a scheduled re-dispatch) if immediate retries are unacceptable.How can I help you explore Laravel packages today?