RedisStreamTransport

class RedisStreamTransport(redisTemplate: ReactiveStringRedisTemplate, pollTimeout: Duration = Duration.ofSeconds(2), recoveryOptions: RedisStreamRecoveryOptions = RedisStreamRecoveryOptions.DEFAULT, messageBusObserver: RedisMessageBusObserver = RedisMessageBusObserver.NOOP, retentionOptions: RedisStreamRetentionOptions = RedisStreamRetentionOptions.DEFAULT, failurePolicy: TransportFailurePolicy = TransportFailurePolicy.DEFAULT) : Transport

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.

Constructors

Link copied to clipboard
constructor(redisTemplate: ReactiveStringRedisTemplate, pollTimeout: Duration = Duration.ofSeconds(2), recoveryOptions: RedisStreamRecoveryOptions = RedisStreamRecoveryOptions.DEFAULT, messageBusObserver: RedisMessageBusObserver = RedisMessageBusObserver.NOOP, retentionOptions: RedisStreamRetentionOptions = RedisStreamRetentionOptions.DEFAULT, failurePolicy: TransportFailurePolicy = TransportFailurePolicy.DEFAULT)

Types

Link copied to clipboard

A received stream entry; acknowledging it sends XACK for its group.

Functions

Link copied to clipboard
open override fun open(group: String, topics: Set<String>): TransportReceiver
Link copied to clipboard
open override fun send(message: TransportMessage): Mono<Void>