Skip to main content

ADR 0003: Redis Stream consumers phase 2

Status​

Accepted. Runtime direction (streams-only, outbox) is superseded by ADR 0004. This ADR remains the record of the consume cutover and the emergency rollback toggles.

Context​

After phase 1, publishers could select splick.events.transport as DUAL, PUBSUB, or STREAMS. Social and communication gained stream consumers. Pub/Sub consumers stayed as a fallback.

Decision​

  • Keep the publisher transport configurable.
  • Enable Redis Streams consumers by default for social-service and communication-service.
  • Disable Pub/Sub consumers by default.

Defaults at that phase: SHARED_EVENTS_CONSUMER_STREAMS_ENABLED=true, SHARED_EVENTS_CONSUMER_PUBSUB_ENABLED=false, publisher still DUAL unless overridden.

Consequences​

The default path gained consumer groups and retention. Pub/Sub remained an incident lever, not the design.

Rollback​

  1. SHARED_EVENTS_CONSUMER_STREAMS_ENABLED=false
  2. SHARED_EVENTS_CONSUMER_PUBSUB_ENABLED=true
  3. Keep publisher DUAL during the switch so events are not dropped.
  4. Re-enable streams after lag looks normal.

Current production default is streams-only outbox publish, so this rollback needs a deliberate decision. It is not a config flip to try first.