Skip to content

ss-keel-kafka

ss-keel-kafka provides Publisher and Subscriber implementations backed by franz-go, a high-performance Kafka client for Go.

Implements: Publisher / Subscriber

Terminal window
go get github.com/slice-soft/ss-keel-kafka
import "github.com/slice-soft/ss-keel-kafka"
client, err := sskafka.Connect(sskafka.Config{
Brokers: strings.Split(os.Getenv("KAFKA_BROKERS"), ","),
ConsumerGroup: "my-api",
})
publisher := client.Publisher()
subscriber := client.Subscriber()
payload, _ := json.Marshal(event)
publisher.Publish(ctx, core.Message{
Topic: "user.registered",
Key: []byte(user.ID),
Payload: payload,
})
subscriber.Subscribe(ctx, "user.registered", func(ctx context.Context, msg core.Message) error {
var user User
json.Unmarshal(msg.Payload, &user)
return sendWelcomeEmail(ctx, &user)
})
app.OnShutdown(func(ctx context.Context) error {
publisher.Close()
return subscriber.Close()
})
app.RegisterHealthChecker(sskafka.NewHealthChecker(client))
// → "kafka": "UP" in GET /health