Tìm hiểu về RabbitMQ? Ứng dụng của RabbitMQ

2 min read

RabbitMQ là gì?

RabbitMQ là một AMQP message broker hay còn gọi là phần mềm quản lý hàng đợi message. Hiểu đơn giản, đây là phần mềm định nghĩa hàng đợi một ứng dụng khác có thể kết nối đến để bỏ message vào và gửi message dựa trên nó.

Message broker là gì?

Là một chương trình trung gian được thiết kế để validating, transforming và routing messages. Chúng phục vụ các nhu cầu giao tiếp giữa các ứng dụng với nhau.

Với Message broker, ứng dụng nguồn (producer) gửi một message đến một server process mà nó có thể cung cấp việc sắp xếp dữ liệu, routing (Định tuyến), message translation, persistence và delivery tất cả các điểm đến thích hợp (consumer).

Có 2 hình thức giao tiếp cơ bản với một Message Broker:

  • Publish và Subscribe (Topics)
  • Point-to-Point (Queues)

Khi nào và tại sao dùng RabbitMQ

RabbitMQ giúp server gửi các reponse cho các request rất nhanh thay vì bị ép buộc chạy một procedure ngốn tài nguyên trên một hệ thống. Việc đưa message vào hàng đợi là một giải pháp tốt khi ta muốn phân tán message cho nhiều người nhận giúp giảm tải cho các worker xử lý.

VD như user được phép nhận một NFT từ hệ thống, bài toán là khi hàng nghìn user cùng nhấp vào nút nhận NFT, lúc này server nhận rất nhiều request sẽ gây ra vài vấn đề như chậm, quá tải, thậm chí không tạo được NFT và gửi cho user do nghẽn…lúc này chúng ta cần dùng RabbitMQ để đẩy các request này vào hàng chờ. Cơ chế như sau:

Một consumer lấy message từ hàng đợi và bắt đầu xử lý mint NFT trong lúc với một producer đang bỏ thêm những message mới vào trong hàng đợi. Một request có thể được tạo bằng ngôn ngữ này và xử lý bằng một ngôn ngữ khác. Hai ứng dụng trao đổi với nhau qua các message. Do đó, hai ứng dụng gửi và nhận sẽ có độ ràng buộc thấp.

  1. User gửi yêu cầu nhận NFT lên ứng dụng web
  2. Ứng dụng web (producer) gửi message đến RabbitMQ, có chứa thông tin dữ liệu mà user yêu cầu, như loại NFT, số lượng NFT…
  3. Một exchange được đồng ý từ ứng dụng producer và dẫn chúng đến đúng hàng đợi mint NFT và gửi cho user
  4. Một worker xử lý NFT (consumer) nhận một task và bắt đầu xử lý mint NFT và gửi cho user.

Tính năng nổi bật

Tính năngMô tả
Reliable deliveryĐảm bảo message được gửi và nhận an toàn (acknowledgment, retry, etc.).
PersistenceLưu message trên ổ đĩa nếu cần tránh mất mát khi restart.
Acknowledgment (ACK)Consumer có thể xác nhận đã xử lý message thành công.
Dead Letter Queue (DLQ)Message lỗi có thể được chuyển sang queue riêng để xử lý sau.
Fair dispatchRabbitMQ có thể phân phối message đều giữa các consumer.
ClusteringHỗ trợ chạy nhiều node RabbitMQ để tăng độ sẵn sàng và khả năng chịu lỗi.

Dùng RabbitMQ khi nào?

  • Khi bạn cần tách biệt các thành phần trong hệ thống microservices.
  • Khi cần xử lý asynchronous (xử lý không đồng bộ).
  • Khi cần đảm bảo retry hoặc resilience (độ bền) cho hệ thống xử lý message.
  • Khi muốn buffer một lượng lớn dữ liệu giữa các thành phần xử lý.
Avatar photo

Dựng front-end bằng Clean Architecture

Khi nhắc đến Clean Architecture, nhiều người thường chỉ nghĩ đến backend – nơi cần cấu trúc rõ ràng để quản lý nghiệp vụ...
Avatar photo Toan Nguyen Thai
5 min read

Leave a Reply

Your email address will not be published. Required fields are marked *