Goro is a Go client library for Event Store.
package main
import (
"bytes""context""encoding/json""fmt""github.com/vectorhacker/goro"
)
funcmain() {
// create a client to use the Event Storeclient:=goro.Connect("http://localhost:2113", goro.WithBasicAuth("admin", "changeit"))
writer:=client.Writer("messages")
reader:=client.FowardsReader("messages")
catchupSubscription:=client.CatchupSubscription("messages", 0) // start from 0data:= []byte("{\"message\": \"hello world\"}")
// write the eventctx:=context.Background()
event:=goro.CreateEvent(
"message",
data,
nil, // nil metadata0,
)
err=writer.Write(ctx, goro.ExpectedVersionAny, event)
iferr!=nil {
panic(err)
}
// subscribe to a stream of eventsgofunc() {
ctx:=context.Background()
messages:=catchupSubscription.Subscribe(ctx)
formessage:=rangemessages {
fmt.Printf("%s\n", messages.Event.Data)
}
}()
// read eventsevents, err:=reader.Read(ctx, 0, 1)
iferr!=nil {
panic(err)
}
for_, event:=rangeevents {
fmt.Printf("%s\n", event.Data)
}
}- Tests
- Competing Consumers
- Projections
- Read Events
- Stream Events
- Write Events
- User Management