RabbitMQ là một phần mềm trung gian tin nhắn phân tán được phát triển bằng ngôn ngữ Erlang và được mã nguồn mở. Nó hỗ trợ Giao thức Hàng đợi Tin nhắn Tiên tiến (AMQP) và thư viện khách hàng trong nhiều ngôn ngữ lập trình như Java, Golang, PHP và Python.

Đặc điểm

  • Tin cậy: Đảm bảo tính tin cậy thông qua việc lưu trữ tin nhắn, hỗ trợ giao dịch, xác nhận tiếp nhận và truyền tin, vv.
  • Cơ chế Định tuyến: Hỗ trợ các mô hình đăng ký và tiêu thụ chính như phát sóng, đăng ký, kết hợp header, vv.
  • Tính Linh hoạt: Nhiều nút RabbitMQ có thể tạo thành một cụm và có thể mở rộng cụm một cách linh hoạt theo nhu cầu kinh doanh thực tế.
  • Khả năng Sẵn có cao: Hàng đợi có thể được thiết lập là gương trên các máy trong cụm, làm cho hàng đợi vẫn sẵn có trong trường hợp xảy ra vấn đề với một số nút.
  • Nhiều Giao thức: Ngoài hỗ trợ AMQP nguyên bản, RabbitMQ còn hỗ trợ nhiều giao thức phần mềm trung gian như STOMP, MQTT, vv.
  • Khách hàng Đa ngôn ngữ: RabbitMQ hỗ trợ gần như tất cả các ngôn ngữ thông dụng, như Java, Python, Ruby, PHP, C#, JavaScript, vv.
  • Giao diện Quản lý: RabbitMQ cung cấp một giao diện thân thiện với người dùng để giám sát và quản lý tin nhắn và các nút cụm.
  • Cơ chế Plugin: RabbitMQ cung cấp nhiều plugin cho các tiện ích mở rộng rộng lớn, và người dùng cũng có thể tự viết các plugin của riêng họ.

Các Trường Hợp Sử Dụng Chính

Xử Lý Bất đồng bộ

Các phần không quan trọng hoặc không phải là phần chính của quy trình kinh doanh có thể được thông báo không đồng bộ đến hệ thống đích bằng cách sử dụng thông báo tin nhắn, cho phép quy trình kinh doanh chính phản ứng kịp thời mà không cần đợi đồng bộ cho kết quả xử lý từ các hệ thống khác.

Tách Rời Ứng Dụng

Mở rộng kinh doanh có thể được thực hiện dựa trên cơ chế đăng ký tin nhắn. Ví dụ, trong một kịch bản đặt hàng thương mại điện tử, khi người dùng đặt một đơn hàng, một tin nhắn đơn hàng được tạo ra. Bộ phận kho có thể đăng ký tin nhắn đơn hàng để vận chuyển, bộ phận điểm thưởng có thể đăng ký tin nhắn đơn hàng để thêm điểm thưởng, và bộ phận SMS có thể đăng ký tin nhắn đơn hàng để gửi tin nhắn văn bản, và vv.

Cắt Lề

Vì có thể có sự khác biệt về khả năng xử lý của các hệ thống ở hạ lưu và thượng lưu, hàng đợi tin nhắn có thể hoạt động như một bộ điều chỉnh để cho phép các hệ thống ở hạ lưu xử lý lưu lượng một cách chắc chắn.

Ví dụ, trong trường hợp thanh toán đơn hàng một cách thành công và thông báo cho kho vận chuyển, nếu bộ phận đơn hàng hiện tại hỗ trợ một số lượng lớn người dùng đồng thời là 1000 và kho hàng chỉ hỗ trợ 100, việc sử dụng hàng đợi tin nhắn có thể cho phép bộ phận kho vận chuyển đăng ký tin nhắn đơn hàng và xử lý vận chuyển chậm chạp trong một hàng đợi.

ps: Giống như đứng xếp hàng chờ tàu điện ngầm.