Message Queue VS Message Bus
Bài viết được sự cho phép của tác giả Lê Chí Dũng
MESSAGE QUEUE
Message Queue nôm na là Queue (hàng đợi), chứa Message (Tin nhắn) như hộp thư. Và nó cho phép các thành phần/service trong một hệ thống (hoặc nhiều hệ thống), trao đổi thông tin cho nhau.
Message queue nhận message từ một application và cung cấp chúng cho một hoặc nhiều application khác theo cơ chế vào trước thì ra trước ( First In First Out ).
Một số Message queue được dùng hiện nay:
Architectural scenarios
Nếu API A cần gửi thông tin cập nhật trạng thái tới các API B và C, thì message queue được thiết lập riêng cho B và C.
A sẽ gửi các message riêng biệt cho mỗi queue và mỗi API nhận sẽ đợi và nhận messgae từ queue được thiết lập riêng, sau khi gửi message thành công thì message sẽ bị khử khỏi queue.
Lúc A gửi message thì cả B và C đều không cần có sẵn để nhận message. Message queue luôn hoạt động, vì vậy nếu một API nhận bị khởi động lại, thì nó sẽ bắt đầu kéo message từ queue riêng của nó khi nó trở lại trực tuyến.
Điều này giúp phá vỡ sự phụ thuộc giữa các hệ thống và cung cấp khả năng mở rộng và khả năng chịu lỗi lớn hơn cho các API.
MESSAGE BUS
Message bus còn được gọi Service Bus.
Message Bus cung cấp phương thức để một hoặc nhiều application giao tiếp message đến một hoặc nhiều application khác.
Message Bus không đảm bảo cho việc vào trước xuất trước. Người nhận (Subscribers) đã đăng ký Message Bus có thể nhận message được publish mà không biết về người gửi (Publisher or Sender).
Một số Message Bus được dùng hiện nay:
- Commercial
- IBM Integration Bus
- IBM WebSphere ESB
- InterSystems Ensemble
- Information_Builders iWay Service Manager
- Microsoft Azure Service Bus
- Microsoft BizTalk Server
- Mule ESB
- Oracle Enterprise Service Bus
- Progress Software Sonic ESB (acquired by Trilogy)
- SAP Process Integration
- TIBCO Software ActiveMatrix BusinessWorks
- webMethods enterprise service bus (acquired by Software AG)
- Sonic ESB from Aurea
- Open source
- Apache Camel
- Apache ServiceMix
- Apache Synapse
- Fuse ESB from Red Hat
- JBoss ESB
- NetKernel
- Open ESB
- Petals ESB
- Spring Integration
- UltraESB
- WSO2 ESB
Architectural scenarios
Nếu API A truyền thông tin cập nhật trạng thái cho API B thông qua một Bus.
Sau đó, API C cũng có thể hưởng lợi từ những cập nhật này. Ứng dụng C có thể được cấu hình để listen Bus và thực hiện hành động dựa trên các cập nhật này mà không cần bất kỳ yêu cầu cập nhật nào từ API A.
Không giống như Message queue, API gửi message vào queue cho tất cả các API nhận, Message bus sử dụng mô hình Publisher / Subscribers.
Message được API gửi publish lên Bus thì bất kỳ API nhận nào đã subscribe loại tin nhắn nào thì sẽ nhận được message tương ứng.
Cách tiếp cận này cho phép các API tuân theo nguyên tắc Open/Closed, vì chúng trở nên mở đối với các thay đổi trong tương lai trong khi vẫn đóng để sửa đổi bổ sung.
Bài viết gốc được đăng tải tại lcdung.top
Có thể bạn quan tâm:
- Xây dựng ứng dụng realtime messaging bằng Firebase như TikTok, Bigo…
- Messaging App sẽ định hình lại E-commerce
- System Design Cơ Bản: Message Broker
Xem thêm Việc làm Developer hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?