Message Broker là gì

Message Broker (hay còn gọi là “trình môi giới thông điệp”) là một thành phần trung gian chuyên xử lý việc gửi, nhận, định tuyến và chuyển tiếp thông điệp (message) giữa các thành phần (ứng dụng, dịch vụ) trong hệ thống. Nó cho phép giao tiếp phi đồng bộ giữa các hệ thống thông qua hàng đợi (queue), chủ đề (topic), hoặc các kênh (channel) mà không cần các bên giao tiếp biết trực tiếp nhau (decoupling).

Ví dụ: Dịch vụ A muốn gửi thông tin đơn hàng đến dịch vụ B để xử lý. Thay vì gọi API trực tiếp, dịch vụ A gửi message vào một queue. Dịch vụ B sau đó sẽ lấy message đó ra để xử lý.

Vai trò của Message Broker trong hệ thống

Message Broker đóng vai trò như một “người chuyển phát thư thông minh”, đảm bảo:

  • Tách rời (decoupling) giữa các thành phần trong hệ thống.
  • Giao tiếp không đồng bộ: không cần chờ phản hồi tức thì.
  • Đảm bảo độ tin cậy (reliability): lưu trữ tạm thời nếu hệ thống đích tạm thời không sẵn sàng.
  • Tăng khả năng mở rộng (scalability): dễ dàng thêm/bớt dịch vụ xử lý mà không ảnh hưởng logic chính.
  • Định tuyến thông minh: message có thể được phân phối đến một hoặc nhiều subscriber phù hợp.

Mô hình hoạt động của Message Broker

Mô hình Point-to-Point (Queue)

  • Một producer gửi message vào một hàng đợi.
  • Một consumer lấy message ra và xử lý.
  • Message chỉ được xử lý bởi một consumer.
  • Ví dụ: RabbitMQ, ActiveMQ.

Mô hình Publish/Subscribe (Pub/Sub)

  • Một producer gửi message đến một topic.
  • Nhiều subscriber cùng nhận message đó.
  • Mô hình này thường dùng trong các ứng dụng cần phát tán thông tin đến nhiều nơi.
  • Ví dụ: Apache Kafka, Redis Pub/Sub, Google Pub/Sub.

Một số tính năng của Message Broker

  • Lưu trữ tạm thời: lưu message trong ổ cứng để tránh mất dữ liệu khi gặp sự cố.
  • Retry / DLQ: gửi lại các message bị lỗi hoặc đưa vào hàng đợi riêng (Dead Letter Queue).
  • Ordering: đảm bảo message được xử lý theo đúng thứ tự gửi.
  • Routing: hỗ trợ gửi message tới các consumer đúng logic.
  • Bảo mật: cơ chế xác thực, phân quyền, mã hóa message.

Ưu và nhược điểm của Message Broker

Ưu điểm

  • Giao tiếp phi đồng bộ giúp tăng hiệu suất hệ thống.
  • Hệ thống tách rời  dễ bảo trì, nâng cấp từng phần.
  • Có khả năng lưu trữ, xử lý message thất bại (reliable).
  • Dễ mở rộng theo chiều ngang.

Nhược điểm

  • Tăng độ phức tạp trong thiết kế và triển khai.
  • Cần xử lý các vấn đề như retry, idempotency (tránh xử lý lặp).
  • Một điểm lỗi mới cần giám sát (nếu broker ngừng hoạt động).
  • Cần bảo mật và kiểm soát truy cập tốt.

Tham khảo: Message Broker là gì? Giới Thiệu về Message Broker | 200Lab Blog

About the Author

Đức Phát

View all author's posts

Leave a Comment

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

Bài viết khác

Sử dụng Request/Response trong ứng dụng RESTful mô hình MVC

DTO là gì? DTO (Data Transfer Object) là một object trung gian dùng để truyền dữ liệu giữa client – server hoặc giữa các service trong ứng dụng web/API theo kiến trúc RESTful API. DTO chỉ chứa các thông tin cần thiết mà client hoặc service khác cần (ví dụ: Login Form chỉ cần thông […]

Docker

Docker là gì? Docker là một nền tảng mã nguồn mở cho phép bạn đóng gói, phân phối và chạy ứng dụng bên trong các “container” – những môi trường ảo nhẹ, cô lập nhưng vẫn chia sẻ nhân hệ điều hành của máy chủ. Khái niệm then chốt ở đây là “containerization”: thay vì […]

Kiểm thử phần mềm

Testing là gì? Quá trình kiểm thử phần mềm (software testing) là một chuỗi hoạt động có hệ thống nhằm đánh giá chất lượng, độ ổn định và tính đúng đắn của một ứng dụng so với yêu cầu ban đầu. Không đơn thuần chỉ là tìm ra lỗi, testing còn giúp đảm bảo rằng […]

Cache

Cache là gì? Cache là một bộ nhớ tạm (nhanh) được sử dụng để lưu trữ tạm thời dữ liệu thường xuyên được truy cập, nhằm giảm độ trễ và tăng hiệu suất của hệ thống. Cache thường được sử dụng ở Client, như CPU, applications, web browsers hoặc operating systems (OSes). Một số Cache phổ […]

Tìm hiểu Kafka

Kafka là gì? Apache Kafka là một nền tảng phân phối sự kiện phân tán mã nguồn mở được phát triển bởi Apache Software Foundation và được viết bằng Java và Scala. Kafka ban đầu được phát triển bởi LinkedIn và sau đó được mở nguồn cho Quỹ phần mềm Apache (Apache Software Foundation) vào đầu năm 2011. (đồng sáng lập […]

Tìm hiểu RabbitMQ

RabbitMQ là gì? RabbitMQ là một phần mềm trung gian giúp các hệ thống, server, ứng dụng có thể giao tiếp, trao đổi dữ liệu với nhau. Nhiệm vụ của RabbitMQ được hiểu đơn giản là: nhận message từ nhiều nguồn => lưu trữ, sắp xếp sao cho hợp lý => đẩy tới đích đến. Là […]