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

So sánh giữa gorm vs go-pg vs bun

Trong thế giới phát triển Golang, việc tương tác với cơ sở dữ liệu là một phần không thể thiếu của hầu hết các ứng dụng. Để đơn giản hóa quy trình này, các thư viện ORM (Object-Relational Mapping) ra đời, giúp các nhà phát triển thao tác với database thông qua các đối tượng […]

So sánh GORM vs go-pg vs Bun

Cộng đồng GORM Là ORM phổ biến nhất trong cộng đồng Go. Có nhiều tài liệu, ví dụ, StackOverflow câu trả lời, và nhiều package hỗ trợ mở rộng. Nhiều developer đã từng dùng Gorm. go-pg Từng rất phổ biến khi chỉ dùng PostgreSQL, nhưng đang bị Bun thay thế dần. Ít được duy trì […]

clean architecture golang

  1.Clean Architecture là gì? Clean Architecture là một kiến trúc phần mềm được đề xuất bởi Robert C. Martin (Uncle Bob) nhằm mục tiêu tách biệt rõ ràng giữa các tầng trong ứng dụng, giúp mã nguồn dễ bảo trì, mở rộng, và kiểm thử. 2.Tổng quan kiến trúc Entity (Domain Model): Là tầng […]

Tìm hiểu Hexagonal Architecture

Hexagonal Architecture là gì? Hexagonal Architecture (tên gọi khác là ports and adapters architecture), là một mẫu kiến trúc được dùng trong thiết kế phần mềm. Nó hướng tới việc xây dựng ứng dụng xoay quanh business/application logic mà không ảnh hưởng hoặc phụ thuộc bởi bất kì thành phần bên ngoài, mà chỉ giao […]

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ì […]