apache / apache/pulsar-client-go

how to handle a forvever reader for a client unless the client is closed by program

Open
#1,148 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
745
Forks
389
Avg merge
3d 20h
Merged PRs (30d)
3

Description

```
client, err := pulsar.NewClient(pulsar.ClientOptions{URL: "pulsar://localhost:6650"})
if err != nil {
log.Fatal(err)
}

defer client.Close()

reader, err := client.CreateReader(pulsar.ReaderOptions{
Topic: "topic-1",
StartMessageID: pulsar.EarliestMessageID(),
})
if err != nil {
log.Fatal(err)
}
defer reader.Close()

for reader.HasNext() {
msg, err := reader.Next(context.Background())
if err != nil {
log.Fatal(err)
}

fmt.Printf("Received message msgId: %#v -- content: '%s'\n",
msg.ID(), string(msg.Payload()))
}
```
This is example the doc shows. I‘m consufed with how to handle the reader. If a connection is aborted(not program close it), would the reader break?

Contributor guide

Open the contributing guide

Research direction

Start with the ReaderOptions example in the issue and inspect the reader lifecycle around HasNext, Next, and Close. Confirm what happens after an aborted connection, then document the expected behavior and recovery path; no file or test is named in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems, documentation
Issue type
Documentation
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.