go-amqp-consumer

Implement RabbitMQ consumers in Go with manual acknowledgements and dead-letter-exchange retries.

1|Updated Jun 20, 2026
One-click install
npx skills add https://github.com/shafibabar/SDLC-Artifact-Factory --skill go-amqp-consumer
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: go-amqp-consumer
Source: https://github.com/shafibabar/SDLC-Artifact-Factory/tree/main/skills/go-amqp-consumer
Command: npx skills add https://github.com/shafibabar/SDLC-Artifact-Factory --skill go-amqp-consumer

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This skill addresses the complexity of implementing reliable RabbitMQ consumers in Go, specifically solving the challenges of manual acknowledgement, competing consumer fairness, and the lack of native offset-based replay found in log-based brokers.

Core Features & Use Cases

  • Manual Ack Contract: Implements strict at-least-once delivery guarantees by managing manual acknowledgements and handling transient vs. permanent failures.
  • Retry Topology: Provides a blueprint for building dead-letter-exchange and TTL-based retry mechanisms to handle poison messages without blocking queues.
  • Graceful Shutdown: Ensures in-flight deliveries are processed and acknowledged before the consumer exits, preventing data loss during deployments.

Quick Start

Use the go-amqp-consumer skill to implement a new RabbitMQ consumer with manual acknowledgement and dead-letter-exchange retry logic for the backend service.

Frequently Asked Questions about go-amqp-consumer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I implement at-least-once delivery in a RabbitMQ consumer using Go?

To implement at-least-once delivery in a RabbitMQ consumer using Go, you must use manual acknowledgements. This ensures messages are only acknowledged after successful processing, handling transient and permanent failures appropriately.

What is the best way to handle poison messages in RabbitMQ without blocking the main queue?

The best way to handle poison messages in RabbitMQ is by configuring a dead-letter-exchange with TTL-based retry mechanisms. This topology automatically routes failed messages away from the main queue to prevent blocking.

How do I ensure graceful shutdown for a Go RabbitMQ consumer during deployments?

To ensure graceful shutdown for a Go RabbitMQ consumer, you must manage in-flight deliveries. This process ensures all active messages are processed and acknowledged before the consumer exits, preventing data loss during deployments.

How does prefetch tuning affect competing consumers in an event-driven Go architecture?

Prefetch tuning affects competing consumers by limiting the number of unacknowledged messages a consumer can hold. Properly tuning this parameter ensures fairness and prevents a single slow consumer from hoarding messages in an event-driven architecture.

Can I use the amqp091-go client to build crash-safe RabbitMQ consumers?

Yes, you can use the amqp091-go client to build crash-safe RabbitMQ consumers. It supports the manual ack contracts and broker-side topology management required for reliable message consumption in production-grade event-driven systems.