You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a developer publishing outbox messages through Redis Streams, I want the NetEvolve.Pulse.Redis README to document UseRedisStreamsTransport and its options, so that I can set up and configure the transport without reading the source code.
Problem
The NetEvolve.Pulse.Redis package ships two features: the Redis idempotency store and the Redis Streams outbox transport (#284). Its README documents only the first one.
src/NetEvolve.Pulse.Redis/README.md:7 describes the package only as a "Redis idempotency provider for Pulse". Its sections (Features, Installation, Quick Start, Configuration, Options) cover only AddRedisIdempotencyStore and IdempotencyKeyOptions.
The README never mentions "Stream" or "Transport". UseRedisStreamsTransport, RedisStreamsTransportOptions and the Pulse:Transports:RedisStreams configuration section are missing.
This information exists only in the XML docs of src/NetEvolve.Pulse.Redis/RedisStreamsMediatorBuilderExtensions.cs:17-51. They cover the IConnectionMultiplexer prerequisite, the note that the transport replaces any previously registered IMessageTransport, and the automatic binding from Pulse:Transports:RedisStreams. None of this reaches the NuGet page.
RedisStreamsTransportOptions.ConsumerName (src/NetEvolve.Pulse.Redis/Outbox/RedisStreamsTransportOptions.cs:21, default Environment.MachineName) can be bound from configuration, but nothing reads it. RedisStreamsMessageTransport only publishes (StreamAddAsync) and creates the consumer group. It reads only Database, StreamKey, CreateStreamIfNotExists and ConsumerGroupName. Its XML doc ("the name of the consumer within the consumer group") doesn't say that it currently has no effect.
#786 adds only the missing template sections (Features, Installation, Requirements, Related Packages, Contributing, Support, License) to this README. It does not cover the Streams transport.
ConsumerName is part of this contract and of the public, config-bound API, so this issue keeps the property. Removing it would be a breaking change and would need its own feat(redis)!: issue.
Requirements
Update the package description at src/NetEvolve.Pulse.Redis/README.md:7 to cover both the idempotency store and the Redis Streams transport.
Add a "Redis Streams Transport" section containing:
The prerequisite that IConnectionMultiplexer must be registered.
A registration example for UseRedisStreamsTransport(), both with and without custom options.
An options table for StreamKey, ConsumerGroupName, ConsumerName, Database and CreateStreamIfNotExists, with their defaults.
An appsettings.json example for the Pulse:Transports:RedisStreams section.
A note that the transport replaces any previously registered IMessageTransport.
In both the options table and the XML doc of RedisStreamsTransportOptions.ConsumerName, state that the property is currently unused and reserved for consumer-side reading, because the transport only publishes.
User Story
As a developer publishing outbox messages through Redis Streams, I want the
NetEvolve.Pulse.RedisREADME to documentUseRedisStreamsTransportand its options, so that I can set up and configure the transport without reading the source code.Problem
The
NetEvolve.Pulse.Redispackage ships two features: the Redis idempotency store and the Redis Streams outbox transport (#284). Its README documents only the first one.src/NetEvolve.Pulse.Redis/README.md:7describes the package only as a "Redis idempotency provider for Pulse". Its sections (Features, Installation, Quick Start, Configuration, Options) cover onlyAddRedisIdempotencyStoreandIdempotencyKeyOptions.UseRedisStreamsTransport,RedisStreamsTransportOptionsand thePulse:Transports:RedisStreamsconfiguration section are missing.src/NetEvolve.Pulse.Redis/RedisStreamsMediatorBuilderExtensions.cs:17-51. They cover theIConnectionMultiplexerprerequisite, the note that the transport replaces any previously registeredIMessageTransport, and the automatic binding fromPulse:Transports:RedisStreams. None of this reaches the NuGet page.RedisStreamsTransportOptions.ConsumerName(src/NetEvolve.Pulse.Redis/Outbox/RedisStreamsTransportOptions.cs:21, defaultEnvironment.MachineName) can be bound from configuration, but nothing reads it.RedisStreamsMessageTransportonly publishes (StreamAddAsync) and creates the consumer group. It reads onlyDatabase,StreamKey,CreateStreamIfNotExistsandConsumerGroupName. Its XML doc ("the name of the consumer within the consumer group") doesn't say that it currently has no effect.#786 adds only the missing template sections (Features, Installation, Requirements, Related Packages, Contributing, Support, License) to this README. It does not cover the Streams transport.
Specification
The accepted ADR
decisions/2026-01-09-nuget-package-readme-template.md:Its required sections include "Usage Examples" and "Configuration: Setup and configuration guidance".
The feature spec #284 defines the options contract:
ConsumerNameis part of this contract and of the public, config-bound API, so this issue keeps the property. Removing it would be a breaking change and would need its ownfeat(redis)!:issue.Requirements
src/NetEvolve.Pulse.Redis/README.md:7to cover both the idempotency store and the Redis Streams transport.IConnectionMultiplexermust be registered.UseRedisStreamsTransport(), both with and without custom options.StreamKey,ConsumerGroupName,ConsumerName,DatabaseandCreateStreamIfNotExists, with their defaults.appsettings.jsonexample for thePulse:Transports:RedisStreamssection.IMessageTransport.RedisStreamsTransportOptions.ConsumerName, state that the property is currently unused and reserved for consumer-side reading, because the transport only publishes.Acceptance Criteria
src/NetEvolve.Pulse.Redis/README.mdcontains noUseRedisStreamsTransportand noPulse:Transports:RedisStreams.appsettings.jsonexample.ConsumerNameas currently unused (reserved).RedisStreamsTransportOptionsConfigurationTestsstill passes.