Skip to content

Pulsar: subscription initial position (Earliest/Latest) (#3178)#3196

Merged
jeremydmiller merged 1 commit into
mainfrom
feat/pulsar-initial-position-3178
Jun 22, 2026
Merged

Pulsar: subscription initial position (Earliest/Latest) (#3178)#3196
jeremydmiller merged 1 commit into
mainfrom
feat/pulsar-initial-position-3178

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Part of the Pulsar re-evaluation epic #3176. Fixes #3178.

Adds first-class cold-start control for new Pulsar subscriptions — the Pulsar analogue of the Kafka transport's BeginAtEarliest() / BeginAtLatest() (#3146).

Changes

  • PulsarEndpoint.SubscriptionInitialPosition (default Latest, matching DotPulsar's own default) flows to the consumer and the retry consumer via IConsumerBuilder.InitialPosition(...).
  • PulsarListenerConfiguration gains BeginAtEarliest(), BeginAtLatest(), and SubscriptionInitialPosition(SubscriptionInitialPosition).
  • Only affects the first read of a not-yet-existing subscription; once the subscription exists Pulsar resumes from its committed cursor.

Tests

  • Config unit tests (default is Latest; BeginAtEarliest/BeginAtLatest/explicit setter map correctly).
  • Integration tests: Earliest replays messages published before the subscription existed; Latest consumes only messages published afterward.

Docs

New "Subscription Initial Position" section in the Pulsar transport guide.

🤖 Generated with Claude Code

Adds first-class cold-start control for new Pulsar subscriptions, the Pulsar analogue of
the Kafka transport's BeginAtEarliest()/BeginAtLatest() (#3146).

- PulsarEndpoint.SubscriptionInitialPosition (default Latest, matching DotPulsar) flows to the
  consumer (and retry consumer) via IConsumerBuilder.InitialPosition(...).
- PulsarListenerConfiguration gains BeginAtEarliest(), BeginAtLatest(), and
  SubscriptionInitialPosition(SubscriptionInitialPosition) for explicit control.
- Only affects the first read of a not-yet-existing subscription.

Tests: config unit tests + integration tests proving Earliest replays messages published
before the subscription existed and Latest consumes only messages published afterward. Docs
updated with a "Subscription Initial Position" section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jeremydmiller
jeremydmiller merged commit 6308b94 into main Jun 22, 2026
25 checks passed
This was referenced Jun 23, 2026
This was referenced Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pulsar: subscription initial position (Earliest/Latest)

1 participant