message-queue-selection

Guides selection between work queues, pub/sub, and log-based messaging systems.

Updated Dec 29, 2025
One-click install
npx skills add https://github.com/snoodleboot-io/discrecontinual_equations --skill message-queue-selection-snoodleboot-io
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: message-queue-selection
Source: https://github.com/snoodleboot-io/discrecontinual_equations/tree/main/.claude/skills/message-queue-selection
Command: npx skills add https://github.com/snoodleboot-io/discrecontinual_equations --skill message-queue-selection-snoodleboot-io

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Choosing the wrong messaging architecture leads to correctness gaps, blocked pipelines, and outages. This Skill helps you decide between work queues, pub/sub, and log-based systems before reaching for a familiar product, and covers the delivery, ordering, and failure-handling disciplines that make messaging work in production. ## Core Features & Use Cases - Shape Selection Framework: Distinguishes work queue, pub/sub, and log patterns using two questions: one consumer or many, and consumed-and-deleted or retained-and-replayable. - Delivery & Ordering Guidance: Explains why at-least-once is the reality, why idempotent consumers are mandatory, and how per-key ordering via message groups or partition keys avoids the cost of global ordering. - Failure Handling Patterns: Covers dead-letter queues with alerting, backpressure policies, and log retention rules that prevent silent data loss. - Use Case: You are designing an order-processing system and must decide between SQS, SNS, and Kafka. Use this Skill to determine that order events need replay capability (a log), that consumers must be idempotent, and that ordering should be per-order-id via partition keys. ## Quick Start Ask the assistant to help you choose between a work queue, pub/sub, and a log for your messaging use case and review the delivery, ordering, and dead-letter implications.

Frequently Asked Questions about message-queue-selection

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

FAQPage Schema
How do I choose between a message queue and Kafka?▼

Choose a work queue when each message goes to exactly one consumer and is deleted after acknowledgment. Choose Kafka (a log) when messages must be retained and replayable, or when multiple independent consumer groups each track their own offset through the same data.

What is the difference between pub/sub and a message queue?▼

A work queue delivers each message to exactly one consumer from a pool, then deletes it. Pub/sub delivers every published message to every subscriber for fan-out, so independent consumers like billing, inventory, and email each get their own copy.

Why does at-least-once delivery cause duplicate messages?▼

A broker redelivers when it does not receive an acknowledgment, and an ack can be lost even after successful processing. The broker cannot distinguish these cases, so duplicates are the price of not losing messages. Make consumers idempotent to handle this.

Does Kafka guarantee exactly-once delivery to consumers?▼

Exactly-once features cover only a specific producer-to-broker-to-consumer path within one system's transactional boundary. They do not extend to side effects your consumer performs, such as charging a card or calling a third party, so idempotent handlers remain necessary.

When should I use a dead-letter queue?▼

Use a dead-letter queue whenever messages can fail deterministically, such as malformed payloads or references to deleted entities. After a configured number of failed attempts, the message moves to the DLQ so it stops blocking the pipeline, and arrivals should trigger alerts.

Why is global message ordering a bad default?▼

Global ordering forces all messages through a single serialized path, capping throughput and preventing parallel consumption. Most requirements are per-key, so use message group ids or partition keys to preserve order per entity while parallelizing across keys.