Skip to content

docs(redis): Document the Redis Streams transport (UseRedisStreamsTransport, RedisStreamsTransportOptions) in the NetEvolve.Pulse.Redis README #862

Description

@samtrion

User Story

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.


Specification

The accepted ADR decisions/2026-01-09-nuget-package-readme-template.md:

All project READMEs MUST include features, installation instructions, usage examples, requirements, ...

Its required sections include "Usage Examples" and "Configuration: Setup and configuration guidance".

The feature spec #284 defines the options contract:

Create RedisStreamsTransportOptions: StreamKey = "pulse:outbox", ConsumerGroupName = "pulse-processor", ConsumerName = Environment.MachineName, Database = -1, CreateStreamIfNotExists = true.

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.
  • Coordinate with docs: Bring package READMEs in line with the README template and recent changes #786 so that both changes to this README fit the README template.

Acceptance Criteria

  • A failing check comes first: src/NetEvolve.Pulse.Redis/README.md contains no UseRedisStreamsTransport and no Pulse:Transports:RedisStreams.
  • The README describes both features of the package.
  • The README has a "Redis Streams Transport" section with registration examples, an options table that lists defaults, and an appsettings.json example.
  • The README and the XML doc both mark ConsumerName as currently unused (reserved).
  • No public API is removed. RedisStreamsTransportOptionsConfigurationTests still passes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:choreIndicates some housework that needs to be done.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions