RedisStreamTransport
Redis Streams as a Transport: a topic is a stream, a message is one entry whose MESSAGE_FIELD field holds the payload (keys, timestamps and headers are not written).
open creates the consumer group at the stream's end ($) for every topic that lacks one, reaps idle consumers when RedisStreamRetentionOptions.consumerIdleTimeout is set, then completes readiness; reading starts only once processing opens. With recovery enabled, entries left pending by consumers whose lease expired are claimed and delivered again (RedisStreamRecoveryOptions).
A failed receive stream is subscribed again according to failurePolicy (as a new consumer of the same group, whose leftover pending entries recovery claims); readiness fails, and the dispatcher sees the error, only once the policy's retries are exhausted.