Skip to main content

Messaging and Queues

29. What is a message queue and why is it used in distributed systems?

Message Queue (মেসেজ কিউ) হলো এমন একটি মধ্যবর্তী system যেখানে একটি component (Producer) message পাঠায় এবং আরেকটি component (Consumer) সেটি পরে প্রসেস করে।

  • সমস্যা যা সমাধান করে: সার্ভিস A সার্ভিস B কে সরাসরি কল করে — B ডাউন থাকলে A ও fail করে।
  • সমাধান: A কে message queue তে রাখো, B ready হলে নেবে — পরস্পর থেকে decoupled।

What problems does asynchronous messaging solve?

  • Decoupling: Producer এবং Consumer স্বাধীন — একটি ডাউন হলে অন্যটি চলে।
  • Load Leveling: Traffic spike এ message queue বাফার হিসেবে কাজ করে।
  • Reliability: B crash হলেও message হারায় না।
  • উদাহরণ: Order placed → Queue → Email service, Inventory service, Payment service আলাদাভাবে process করে।

What is the difference between a queue and a topic (pub/sub)?

বৈশিষ্ট্যQueueTopic (Pub/Sub)
Deliveryএকটি consumer পায়সব subscriber পায়
PatternPoint-to-PointFan-out
ব্যবহারTask processing, job queueEvent notification, broadcast
উদাহরণOrder processingUser signup → Email, Analytics, Notification সবাই পায়

30. What is the difference between RabbitMQ and Kafka?

বৈশিষ্ট্যRabbitMQApache Kafka
ModelTraditional message brokerDistributed event log/streaming
Message StorageConsumer নিলে message মুছে যায়Disk এ log হিসেবে persist থাকে
Replayসাধারণত সম্ভব নয়Offset দিয়ে যেকোনো সময় replay
Throughput~20k-50k msg/secMillions msg/sec
OrderingQueue levelPartition level
Best ForComplex routing, task queuesEvent streaming, audit log, high throughput

When would you choose Kafka over RabbitMQ?

  • Kafka বেছে নিন: লাখ লাখ events per second, event replay দরকার, multiple consumer group একই data process করবে।
  • RabbitMQ বেছে নিন: Complex routing logic (exchange, binding), lower volume, message priority দরকার।

What is Kafka's log-based storage model?

  • Kafka প্রতিটি message একটি append-only log file এ লেখে।
  • Consumer নিজের offset track করে — কোন message পর্যন্ত পড়েছে।
  • Retention period (যেমন ৭ দিন) পর্যন্ত message থাকে — তারপর মুছে যায়।
  • এই কারণে reprocessing সম্ভব — consumer offset reset করলে আগের events দিয়ে নতুন করে process।

What is a consumer group in Kafka and how does it enable parallel processing?

  • প্রতিটি Consumer Group একটি topic এর সব message একবার করে দেখে।
  • Group এর প্রতিটি consumer আলাদা partition থেকে পড়ে — parallel processing।
  • নতুন service যোগ করতে চাইলে নতুন consumer group তৈরি করুন — একই events ভিন্নভাবে process হবে।
Topic: user-events [Partition 0] [Partition 1] [Partition 2]
Consumer Group A: [Consumer 1] [Consumer 2] [Consumer 3]
Consumer Group B (Analytics): [Consumer 1] পুরো topic পড়ে

31. What is pub/sub messaging and when do you use it?

Pub/Sub (Publish-Subscribe) pattern এ Publisher message পাঠায় topic এ, Subscriber সেই topic এ ভর্তি হয়ে সব message পায়।

What are fan-out patterns in pub/sub systems?

Fan-out: একটি event একসাথে অনেক service কে notify করা।

User Signup Event (Published)
→ Email Service (Welcome email পাঠায়)
→ Analytics Service (signup track করে)
→ Notification Service (Welcome push notification)
→ Recommendation Service (Initial recommendations generate করে)

What is the difference between push and pull delivery in pub/sub?

বৈশিষ্ট্যPush DeliveryPull Delivery
কীভাবে কাজ করেBroker subscriber কে message ঠেলে দেয়Subscriber নিজে broker থেকে message টেনে নেয়
Latencyকমএকটু বেশি (polling interval)
BackpressureConsumer overwhelmed হতে পারেConsumer নিজের গতিতে নেয়
উদাহরণGoogle Cloud Pub/Sub push, WebhookSQS, Kafka

32. How do you ensure exactly-once delivery in a message queue?

What is at-least-once vs at-most-once vs exactly-once delivery semantics?

SemanticsমানেData Loss?Duplicate?
At-most-onceপাঠানো হবে, সফল কিনা নিশ্চিত নয়সম্ভবনা
At-least-onceঅবশ্যই পাবে, তবে একাধিকবার পেতে পারেনাসম্ভব
Exactly-onceঠিক একবার পাবেনানা
  • Exactly-once সবচেয়ে কঠিন এবং performance cost বেশি।
  • বেশিরভাগ system at-least-once + idempotent consumer দিয়ে practically exactly-once অর্জন করে।

How do idempotency keys help ensure exactly-once processing?

  • Consumer যদি একই message দুবার পায়, idempotency key দিয়ে চেক করবে "এটা কি আগেই process হয়েছে?"
  • হ্যাঁ হলে — skip।
  • না হলে — process করে key store করে।
def process_payment(message):
idempotency_key = message['id']
if redis.exists(f"processed:{idempotency_key}"):
return # Already processed

do_payment(message)
redis.setex(f"processed:{idempotency_key}", 86400, "done")

33. What is a dead letter queue (DLQ) and why is it important?

Dead Letter Queue (DLQ) হলো এমন একটি বিশেষ queue যেখানে সফলভাবে process না হওয়া message গুলো যায়।

When does a message end up in a dead letter queue?

  • নির্দিষ্ট সংখ্যক retry এর পরেও fail।
  • Message expiration (TTL পার হলে)।
  • Consumer explicitly reject করলে (poison message)।
  • Message format invalid বা corrupted।

How do you monitor and process messages in a DLQ?

  • Alert setup: DLQ তে message গেলে PagerDuty/Slack alert।
  • Dashboard: DLQ size time over time monitor করুন।
  • Manual review: DLQ message inspect করে bug fix করুন।
  • Replay: Bug fix এর পরে DLQ থেকে original queue তে পুনরায় পাঠান।

What retry strategies work well with a DLQ?

  • Exponential Backoff with Jitter: 1s, 2s, 4s, 8s — এর সাথে random jitter যোগ করুন যেন একসাথে retry না হয়।
  • Max Retry Count: ৩-৫ বার retry এর পরে DLQ।
  • Timeout: Message কতক্ষণ active থাকবে তার সীমা।

34. How do you handle backpressure in a messaging system?

Backpressure হলো যখন consumer producer এর তুলনায় ধীর — queue অনিয়ন্ত্রিতভাবে বাড়তে থাকে।

What strategies can a consumer use to signal backpressure to a producer?

  • Rate Limiting: Producer কে বলুন কম পাঠাতে।
  • Pull-based consumption: Consumer নিজের গতিতে টেনে নেয় (Kafka এর default)।
  • Reject with backpressure signal: Consumer 503 Service Unavailable বা custom signal পাঠায়।

How does Kafka handle slow consumers?

  • Kafka consumer নিজের offset track করে — slow consumer শুধু পিছিয়ে পড়ে, কিন্তু message হারায় না (until retention period শেষ হয়)।
  • Consumer Lag Monitoring: কতটা পিছিয়ে আছে তা monitor করুন।
  • Scale out consumer: Consumer group এ আরও consumer যোগ করুন — parallel processing বাড়ে।
  • যদি consumer অনেক slow হয়, retention period পার হলে message চলে যাবে — এটাই মূল risk।