ss-keel-amqp
ss-keel-amqp provides Publisher and Subscriber implementations backed by amqp091-go, the official RabbitMQ Go client.
Implements: Publisher / Subscriber
Planned Installation
Section titled “Planned Installation”go get github.com/slice-soft/ss-keel-amqpPlanned Usage
Section titled “Planned Usage”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()Publishing
Section titled “Publishing”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", },})Subscribing
Section titled “Subscribing”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)})Shutdown
Section titled “Shutdown”Register shutdown hooks so connections close cleanly:
app.OnShutdown(func(ctx context.Context) error { publisher.Close() return subscriber.Close()})Health Check
Section titled “Health Check”app.RegisterHealthChecker(ssamqp.NewHealthChecker(conn))// → "rabbitmq": "UP" in GET /health