Skip to content

ss-keel-amqp

ss-keel-amqp provides Publisher and Subscriber implementations backed by amqp091-go, the official RabbitMQ Go client.

Implements: Publisher / Subscriber

Terminal window
go get github.com/slice-soft/ss-keel-amqp
import "github.com/slice-soft/ss-keel-amqp"
conn, err := ssamqp.Connect(ssamqp.Config{
URL: os.Getenv("RABBITMQ_URL"), // amqp://user:pass@localhost:5672/
})
publisher := conn.Publisher()
subscriber := conn.Subscriber()
payload, _ := json.Marshal(order)
publisher.Publish(ctx, core.Message{
Topic: "orders.created",
Key: []byte(order.ID),
Payload: payload,
Headers: map[string]string{
"content-type": "application/json",
},
})
subscriber.Subscribe(ctx, "orders.created", func(ctx context.Context, msg core.Message) error {
var order Order
if err := json.Unmarshal(msg.Payload, &order); err != nil {
return err
}
return processOrder(ctx, &order)
})

Register shutdown hooks so connections close cleanly:

app.OnShutdown(func(ctx context.Context) error {
publisher.Close()
return subscriber.Close()
})
app.RegisterHealthChecker(ssamqp.NewHealthChecker(conn))
// → "rabbitmq": "UP" in GET /health