RabbitMQ Implementation
This skill provides patterns for robust RabbitMQ consumer implementation.
Execution Steps
Step 1: Create Consumer Handler
Create a new consumer in listener/ (or internal/mq/) using the template.
Template Usage:
- •Source:
templates/consumer.go.tmpl - •Target:
listener/{{CONSUMER_NAME_LOWER}}.go - •Variables:
- •
{{PACKAGE_NAME}}: Package name (e.g.,listener) - •
{{MODULE_NAME}}: Go module name - •
{{CONSUMER_NAME}}: Consumer struct name (e.g.,MatchStatus) - •
{{MESSAGE_TYPE}}: Struct type of the message (e.g.,types.MatchMsg) - •
{{QUEUE_NAME}}: Queue name
- •
Step 2: Register Listener
In main.go or listener/listener.go (if creating a separate service):
go
// Create consumer instance
consumer := New{{CONSUMER_NAME}}Consumer(ctx, svcCtx)
// Create listener wrapper
l := rabbitmq.NewListener[types.MatchMsg](consumer)
// Start listener
l.Start()
Step 3: Setup Infrastructure (One-time)
If infra/rabbitmq/ does not exist, use templates/infra.go.tmpl (or copy detailed implementation from SKILL Reference) to create the base listener engine.
Templates Location
- •
templates/consumer.go.tmpl: Standard typed consumer handler. - •
templates/infra.go.tmpl: Infrastructure skeleton (refer to SKILL.md text for full impl if not using library).