RabbitMQ: exchange, queue ও routing

RabbitMQ exchange ও queue-কেন্দ্রিক একটি নমনীয় message broker। Routing কীভাবে হয় এবং কাজ হারানো বা দ্বিগুণ হওয়া কীভাবে এড়ান, জানুন।

সুইচের মাধ্যমে queue-তে রুট হওয়া message

RabbitMQ একটি message broker। Producer সরাসরি queue-তে পাঠায় না। সে exchange-এ publish করে, যা নিয়ম অনুযায়ী message এক বা একাধিক queue-তে route করে। Consumer queue থেকে পড়ে।

অংশগুলো

  • Exchange: message নেয় এবং কোথায় যাবে ঠিক করে।
  • Queue: consumer নেওয়া পর্যন্ত message জমিয়ে রাখে।
  • Binding: exchange ও queue যুক্ত করা নিয়ম।
  • Routing key: message-এর লেবেল, যা binding ব্যবহার করে।

Exchange-এর ধরন

  • Direct: routing key পুরোপুরি মিললে সেই queue-তে দেয়।
  • Fanout: যুক্ত সব queue-তে কপি করে (broadcast)।
  • Topic: orders.*.created-এর মতো pattern মেলায়।
  • Headers: message header দেখে route করে।

নির্ভরযোগ্যতা

  • Acknowledgement: কাজ শেষে consumer ack পাঠায়। আগে মরলে message queue-তে ফিরে অন্য consumer পায়। এতে at-least-once delivery হয়, তাই handler idempotent রাখুন।
  • Durable queue ও persistent message broker restart-এ টিকে থাকে।
  • Publisher confirm producer-কে জানায় broker message পেয়েছে।
  • Prefetch: একজন consumer কতগুলো ack-না-করা message ধরে রাখবে তার সীমা, যাতে একটি ধীর worker কাজ আটকে না রাখে।
  • Dead-letter exchange: ব্যর্থ বা মেয়াদোত্তীর্ণ message দেখার জন্য আলাদা করে রাখে।
  • Quorum queue high availability-র জন্য একাধিক node-এ replicate করে।

সাধারণ ব্যবহার

Background job (ইমেইল, ছবি প্রসেস), service-দের মধ্যে request routing, এবং worker-দের মধ্যে কাজ বণ্টন।

RabbitMQ বনাম Kafka

RabbitMQ Kafka
মডেল স্মার্ট routing-এর broker distributed log
পড়ার পর message সরে যায় retention পর্যন্ত থাকে
Replay ডিফল্টে নয় হ্যাঁ
সেরা task queue, নমনীয় routing বিশাল stream, অনেক পাঠক

মূল কথা: নমনীয় routing ও job queue লাগলে RabbitMQ নিন, সবসময় ack ও dead-letter পথ রাখুন, আর consumer idempotent রাখুন।


System Design সিরিজ, পর্ব ২ (building block): 3 নম্বর (মোট 14)। আগের লেখা: Apache Kafka: topic, partition ও consumer group.

আরও পড়ুন

Recursion ও backtracking সহজ উদাহরণে

Recursion সমস্যার ছোট কপি সমাধান করে সমাধান করে। অনেক interview সমস্যায় ব্যবহৃত চিন্তার ধাপ ও backtracking টেমপ্লেট শিখুন।

Interview ও DSA•৩ মিনিটে পড়া