SKILL.md
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/{{CONSUMERNAMELOWER}}.go - Variables:
- {{PACKAGENAME}}: Package name (e.g., listener) - {{MODULENAME}}: Go module name - {{CONSUMERNAME}}: Consumer struct name (e.g., MatchStatus) - {{MESSAGETYPE}}: 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):
// 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).