Message Brokers
Service-গুলোর মধ্যে asynchronous communication-এর মধ্যস্থতাকারী।
আপনি একটি ই-কমার্সে অর্ডার দিলেন। সাথে সাথে — payment process হবে, inventory কমবে, email পাঠানো হবে, SMS পাঠানো হবে, recommendation update হবে। এই সব একসাথে synchronous হলে — অর্ডার confirm-এ ৩০ সেকেন্ড লাগবে। সমাধান: order create করেই একটা message queue-এ ফেলে ব্যবহারকারীকে "OK" বলে দিন। বাকিগুলো background-এ। এটাই Message Broker-এর জাদু।
Message Broker কী?
Message Broker = একটি middleware সিস্টেম যা producer (sender) ও consumer (receiver)-এর মাঝে message asynchronously transmit করে। Producer ও consumer একে অপরকে চেনে না — broker-এর মধ্যস্থতায় communicate।
কেন Message Broker?
- Asynchronous processing: Producer fire-and-forget; consumer পরে process।
- Decoupling: Service-গুলো একে অপরকে directly জানে না।
- Buffering: Spike-এ message queue-এ জমা — overwhelmed হয় না।
- Reliability: Consumer down হলে message persisted।
- Load distribution: Multiple consumer queue থেকে নিতে পারে।
- Scalability: Producer ও consumer স্বাধীনভাবে scale।
দুই কমন pattern
১. Point-to-Point (Queue)
একটি producer একটি queue-এ পাঠায়, একটিমাত্র consumer সেটি পায়।
- Each message একবার consumed।
- Order processing-এ ভালো।
- Multiple consumer থাকলে — load distributed।
২. Publish-Subscribe (Topic)
Publisher topic-এ পাঠায় — সব subscriber copy পায়।
- Each message সব subscriber-এ broadcast।
- Notification, event broadcast-এ ভালো।
- পরের chapter-এ বিস্তারিত।
Terminology
- Producer/Publisher: Message-এর প্রেরক।
- Consumer/Subscriber: Message-এর গ্রাহক।
- Queue: Point-to-point destination।
- Topic/Exchange: Pub-sub destination।
- Message: Header + payload।
- Acknowledgment (ACK): Consumer confirm করেছে।
- Dead Letter Queue (DLQ): Failed message-এর জায়গা।
- Routing: Message কোথায় যাবে — rule-based।
জনপ্রিয় Message Brokers
RabbitMQ
- AMQP protocol
- Routing flexible (exchange)
- Per-message priority
- Throughput: medium
- Use: workflow, RPC
Apache Kafka
- Distributed log
- Massive throughput
- Replay/persistence-friendly
- Use: stream, event sourcing
AWS SQS
- Managed, fully serverless
- Standard ও FIFO queue
- Easy setup
- Use: AWS workloads
Redis Streams / Pub-Sub
- In-memory speed
- Light-weight
- Limited durability
- Use: real-time, simple
Kafka vs RabbitMQ
Kafka
- Distributed log/stream
- Pull-based (consumer pulls)
- Message persisted (replay possible)
- High throughput (million/sec)
- Order guaranteed within partition
- Stream processing
RabbitMQ
- Traditional broker
- Push-based (broker pushes)
- Message-এর পর deleted (ack-এ)
- Medium throughput
- Complex routing
- Workflow, transient task
Message Delivery Guarantees
At-most-once
Message একবার বা শূন্য বার deliver — duplicate নেই, কিন্তু lost হতে পারে।
At-least-once
Message কমপক্ষে একবার deliver — duplicate possible।
সবচেয়ে কমন। Consumer-এর idempotent হতে হবে।
Exactly-once
Message exactly একবার — কঠিন।
Kafka exactly-once support করে (transaction API)।
Persistence ও Reliability
- Disk persistence: Crash-এ message হারায় না।
- Replication: Multiple broker-এ message copy।
- Acknowledgment: Consumer ack না করলে message redelivered।
- Dead Letter Queue: Repeatedly failed message DLQ-তে।
কখন Message Broker ব্যবহার করবেন?
- Long-running task (video transcoding, ML inference)।
- Email/SMS notification।
- Microservice communication।
- Event-driven architecture।
- Spike absorption (traffic burst)।
- Decoupling।
- Audit log/event sourcing।
বাস্তব উদাহরণ
- LinkedIn: Kafka তৈরি করেছিল — বর্তমানে trillion+ message/day।
- Uber: Kafka — trip event, driver location।
- Netflix: Kafka — viewing data, recommendations।
- Slack: Kafka — message delivery।
- Many e-commerce: RabbitMQ for order processing।
সাধারণ ভুল ধারণা
- "Message broker সব সমস্যার সমাধান": না — sync call simpler হলে সেটাই ভালো।
- "Exactly-once trivial": না — distributed system-এ কঠিন।
- "Kafka = RabbitMQ": না — fundamentally different।
Best Practices
- Consumer idempotent বানান (at-least-once delivery থেকে)।
- Dead Letter Queue configure করুন।
- Message-এ schema (Avro, Protobuf) ব্যবহার করুন।
- Versioning support — backward compatible message।
- Monitor — queue length, consumer lag।
- Right tool: streaming-এ Kafka, complex routing-এ RabbitMQ।
📌 চ্যাপ্টার সারমর্ম
- Message Broker = async communication middleware।
- Queue (point-to-point) ও Topic (pub-sub) দুই pattern।
- RabbitMQ: routing, workflow। Kafka: massive throughput, log।
- At-most-once / At-least-once / Exactly-once delivery।
- Decoupling, buffering, reliability — মূল সুবিধা।