go-amqp-publisher

Publish AMQP messages in Go with publisher confirms and mandatory routing.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires github.com/rabbitmq/amqp091-go, and includes references (resource) components.

What problem does it solve?

This skill addresses the inherent risks of message loss in RabbitMQ by providing a standardized, production-grade approach to publishing that ensures messages are confirmed, durable, and routable.

Core Features & Use Cases

  • At-Least-Once Delivery: Implements publisher confirms and mandatory flags to guarantee messages are accepted and routed by the broker.
  • Durability Standards: Enforces the durability triple (durable exchange, durable queue, persistent delivery) to prevent data loss during broker restarts.
  • Transactional Outbox: Provides a reliable relay pattern to ensure database updates and message publishing remain atomic.

Quick Start

Use the go-amqp-publisher skill to configure a new RabbitMQ producer with publisher confirms and mandatory routing enabled for your Go service.

Frequently Asked Questions about go-amqp-publisher

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

FAQPage Schema
How do I implement at-least-once delivery for RabbitMQ producers in Go?

At-least-once delivery in Go requires enabling publisher confirms and mandatory routing flags to ensure RabbitMQ accepts and successfully routes messages. This approach guarantees messages reach the broker without silent data loss during publishing.

What is the durability triple for RabbitMQ and why is it needed?

The durability triple consists of durable exchanges, durable queues, and persistent delivery mode. It is needed to prevent message data loss during RabbitMQ broker restarts by enforcing persistent storage across the messaging topology.

How do I keep database updates and RabbitMQ message publishing atomic?

To keep database updates and RabbitMQ publishing atomic, implement a transactional outbox pattern. This provides a reliable relay mechanism ensuring state changes and message emission succeed or fail together without inconsistency.

Does this approach handle unroutable messages in RabbitMQ?

Yes, handling unroutable messages is enforced using mandatory routing flags. This configuration ensures RabbitMQ returns messages that cannot be routed to a queue, allowing producers to detect and manage delivery failures appropriately.

Do I need idempotent topology declaration for RabbitMQ producers?

Idempotent topology declaration is required to safely configure durable exchanges and queues without failing on subsequent restarts. It ensures the RabbitMQ infrastructure exists predictably before publishing persistent messages.

What limitations exist when using publisher confirms with RabbitMQ in Go?

Publisher confirms in Go require managing asynchronous acknowledgments from RabbitMQ, adding complexity to message flow control. Producers must handle returned unroutable messages and implement retries to maintain at-least-once delivery guarantees.