Catatan Seekor: RabbitMQ

RabbitMQ adalah open-source message broker yang mengimplementasikan Advanced Message Queuing Protocol (AMQP) untuk reliable messaging.

Fundamental

RabbitMQ Concepts

  • Producer: Aplikasi yang mengirim pesan

  • Consumer: Aplikasi yang menerima pesan

  • Queue: Buffer yang menyimpan pesan

  • Exchange: Menerima pesan dari producer dan mengirim ke queue

  • Binding: Aturan yang menghubungkan exchange dengan queue

  • Channel: Virtual connection dalam connection

AMQP Model

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  Producer   │───▶│   Exchange  │───▶│    Queue    │
└─────────────┘    └─────────────┘    └─────────────┘
                          │                    │
                          ▼                    ▼
                   ┌─────────────┐    ┌─────────────┐
                   │  Binding    │    │  Consumer   │
                   └─────────────┘    └─────────────┘

Exchange Types

Direct Exchange

Topic Exchange

Fanout Exchange

Headers Exchange

Queue Management

Queue Declaration

Queue Properties

Message Publishing

Basic Publishing

Publisher Confirms

Message Consumption

Basic Consumption

Consumer Acknowledgments

Consumer Prefetch

Dead Letter Exchange

Dead Letter Configuration

Message Rejection

Clustering and High Availability

Cluster Setup

Queue Mirroring

Monitoring and Management

Management Plugin

Command Line Tools

Health Checks

Performance Tuning

Connection Pooling

Message Persistence

Error Handling

Connection Recovery

References

RabbitMQ Resources

Additional Resources

  • RabbitMQ Documentation: https://www.rabbitmq.com/documentation.html

  • AMQP Specification: https://www.amqp.org/specification/0-9-1/amqp-org-download

  • Pika Python Client: https://pika.readthedocs.io/

Best Practices

Message Design

  • Idempotency: Design messages to be processed multiple times safely

  • Serialization: Use efficient serialization formats (JSON, Protocol Buffers)

  • Size: Keep messages small and focused

  • Headers: Use message headers for metadata

Performance

  • Connection Reuse: Reuse connections and channels

  • Batch Processing: Process messages in batches when possible

  • Async Processing: Use asynchronous consumers for better throughput

  • Monitoring: Monitor queue depths and consumer lag

Reliability

  • Persistent Messages: Use persistent delivery for critical messages

  • Dead Letter Queues: Handle failed messages gracefully

  • Consumer Acknowledgments: Use manual acknowledgments

  • Error Handling: Implement proper error handling and retry logic

Last updated