Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The offset is submitted, but each execution still starts from the beginning and repeats #1318

Open
ChenghuaMi opened this issue Aug 12, 2024 · 2 comments

Comments

@ChenghuaMi
Copy link

func main() {
r := kafka.NewReader(kafka.ReaderConfig{
Brokers: []string{"localhost:9092"},
Topic: "my-topic",
Partition: 0,
MaxBytes: 10e6, // 10MB
})
for {
m, err := r.ReadMessage(context.Background())
if err != nil {
break
}
fmt.Printf("message at offset %d: %s = %s\n", m.Offset, string(m.Key), string(m.Value))
r.CommitMessages(context.Background(), m) // commit offset
}

if err := r.Close(); err != nil {
	log.Fatal("failed to close reader:", err)
}

}

I submitted the offset, but each time I execute the program, it starts from the beginning, resulting in repeated consumption.

===============First Execution===========
message at offset 0: = one!
message at offset 1: = two!
message at offset 2: = three!

============== Second Execution =========
message at offset 0: = one!
message at offset 1: = two!
message at offset 2: = three!

@luffyao
Copy link
Contributor

luffyao commented Sep 3, 2024

i think you must use the consumer group to do this.

@logrusorgru
Copy link

Also, the ReadMessage commits the message automatically.

If consumer groups are used, ReadMessage will automatically commit the offset when called. Note that this could result in an offset being committed before the message is fully processed.

If more fine-grained control of when offsets are committed is required, it is recommended to use FetchMessage with CommitMessages instead.

https://pkg.go.dev/github.com/segmentio/kafka-go#Reader.ReadMessage

And yes, it's for consumer groups.

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

No branches or pull requests

3 participants