1
1
package main
2
2
3
3
import (
4
+ "errors"
4
5
"fmt"
5
- "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp"
6
- "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream"
7
6
"os"
8
7
"sync/atomic"
8
+
9
+ "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/amqp"
10
+ "github.com/rabbitmq/rabbitmq-stream-go-client/pkg/stream"
9
11
)
10
12
11
13
func main () {
@@ -34,7 +36,6 @@ func main() {
34
36
}
35
37
if atomic .AddInt64 (& messageCount , 1 )% 10 == 0 {
36
38
consumerContext .Consumer .StoreOffset ()
37
- fmt .Println ("storing offset" )
38
39
}
39
40
if string (message .GetData ()) == "marker" {
40
41
lastOffset .Store (consumerContext .Consumer .GetOffset ())
@@ -44,11 +45,20 @@ func main() {
44
45
}
45
46
}
46
47
48
+ consumerName := "offset-tracking-tutorial"
49
+ var offsetSpecification stream.OffsetSpecification
50
+ storedOffset , err := env .QueryOffset (consumerName , streamName )
51
+ if errors .Is (err , stream .OffsetNotFoundError ) {
52
+ offsetSpecification = stream.OffsetSpecification {}.First ()
53
+ } else {
54
+ offsetSpecification = stream.OffsetSpecification {}.Offset (storedOffset + 1 )
55
+ }
56
+
47
57
_ , err = env .NewConsumer (streamName , messagesHandler ,
48
58
stream .NewConsumerOptions ().
49
59
SetManualCommit ().
50
- SetConsumerName ("offset-tracking-tutorial" ).
51
- SetOffset (stream. OffsetSpecification {}. LastConsumed () ))
60
+ SetConsumerName (consumerName ).
61
+ SetOffset (offsetSpecification ))
52
62
CheckErrReceive (err )
53
63
fmt .Println ("Started consuming..." )
54
64
_ = <- ch
0 commit comments