Class RedisStreamTransport

All Implemented Interfaces:
Closeable, AutoCloseable

public final class RedisStreamTransport extends PollingTransport

Redis Streams: cn1.messaging.url=redis://... (or rediss://). Works with Redis 6.2 or newer, Valkey and KeyDB.

A destination is a stream and a group a consumer group, created on first use: each group gets every message, and the consumers of one group share them. A message is an entry with its payload, key and headers as fields; acknowledging it is XACK. A consumer that dies leaves its messages pending, and another consumer of the group claims them once they have been idle for cn1.messaging.lease milliseconds (60000) -- counting that as another delivery, so a message that crashes its consumer is dead-lettered like one that throws.

A failed message stays pending, and its next delivery waits in a sorted set per destination and group until it is due; only the group whose listener failed sees it again.

Streams are capped at about cn1.messaging.redis.max-length entries (100000, trimmed with MAXLEN ~), so a destination nobody reads cannot grow without bound.