messaging

Design asynchronous messaging systems with Kafka, RabbitMQ, NATS, and Pulsar.

1|Updated Mar 16, 2026
One-click install
npx skills add https://github.com/iceflower/opencode-agents-and-skills --skill messaging-iceflower
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: messaging
Source: https://github.com/iceflower/opencode-agents-and-skills/tree/main/skills/messaging
Command: npx skills add https://github.com/iceflower/opencode-agents-and-skills --skill messaging-iceflower

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill provides guidance on selecting the right message broker, designing effective messages, implementing robust producer and consumer patterns, and managing schema evolution for reliable asynchronous communication.

Core Features & Use Cases

  • Broker Selection: Compares Kafka, RabbitMQ, NATS, Pulsar, and Redis Pub/Sub based on features like throughput, latency, persistence, and multi-tenancy.
  • Message Design: Defines a standard JSON message structure with fields for ID, type, source, timestamp, version, data, and metadata.
  • Producer/Consumer Patterns: Details delivery guarantees (at-most-once, at-least-once, exactly-once) and error handling strategies (retry, DLQ, skip).
  • Broker-Specific Guidance: Offers specific patterns for NATS (subjects, queue groups, JetStream streams) and Pulsar (tenants, namespaces, subscription modes).
  • Schema Evolution: Outlines strategies for backward compatibility and safe migration.
  • Monitoring: Lists key metrics and alert thresholds for message processing.
  • Use Case: When building a microservices architecture that needs to communicate asynchronously, use this Skill to choose between Kafka and RabbitMQ based on your specific needs for ordering and routing, and to implement reliable message processing with dead-letter queues.

Quick Start

Use the messaging skill to compare Kafka and RabbitMQ for event streaming use cases.

Frequently Asked Questions about messaging

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

FAQPage Schema
How do I choose between Kafka and RabbitMQ for asynchronous messaging?

Choosing between Kafka and RabbitMQ for asynchronous messaging depends on your specific needs for ordering and routing. Kafka suits high-throughput event streaming, while RabbitMQ offers flexible routing for complex consumer patterns.

What are the best practices for message design in event-driven architectures?

Message design in event-driven architectures should use a standard JSON structure including ID, type, source, timestamp, version, data, and metadata fields to ensure robust asynchronous communication and schema evolution across distributed systems.

How do I implement reliable message processing with dead-letter queues?

Implement reliable message processing with dead-letter queues by applying producer and consumer strategies like at-least-once delivery guarantees, retry mechanisms, and skip error handling to manage failures in asynchronous messaging.

When should I use NATS JetStream or Pulsar for distributed systems messaging?

Use NATS JetStream for subjects and queue groups, or Pulsar for multi-tenancy and namespaces in distributed systems messaging. Broker selection depends on specific requirements for latency, persistence, and subscription modes.

How do I handle schema evolution safely in microservices communication?

Handle schema evolution safely in microservices communication by outlining strategies for backward compatibility and safe migration, ensuring that asynchronous messaging patterns do not break existing producer or consumer implementations.