Giới thiệu về Khái niệm Cơ bản của RabbitMQ

Sơ đồ Khái niệm của RabbitMQ

Sơ đồ Khái niệm của RabbitMQ

Giải thích về Khái niệm

Tin nhắn

Một tin nhắn bao gồm một phần tiêu đề tin nhắn (tức là thông tin cấu hình bổ sung) và một phần thân tin nhắn (tức là nội dung tin nhắn).

Nhà xuất bản

Nhà sản xuất của tin nhắn, đó là một ứng dụng khách hàng xuất bản tin nhắn đến một trao đổi.

Trao đổi (Exchange)

Một trao đổi được sử dụng để nhận các tin nhắn gửi từ nhà sản xuất và điều hướng các tin nhắn đó đến các hàng đợi trong máy chủ.

Có bốn loại trao đổi:

  • Loại trực tiếp (Direct): So sánh khóa định tuyến trong tin nhắn với các khóa định tuyến liên kết với tất cả các ràng buộc của trao đổi. Nếu chúng khớp nhau, tin nhắn được gửi đến hàng đợi tương ứng của việc ràng buộc đó.

  • Loại chủ đề (Topic): So sánh khóa định tuyến trong tin nhắn với các khóa định tuyến liên kết với tất cả các ràng buộc của trao đổi. Nếu có khớp, tin nhắn được gửi đến hàng đợi tương ứng của việc ràng buộc đó.

  • Loại phân phối (Fanout): Trực tiếp chuyển tiếp tin nhắn đến các hàng đợi tương ứng của tất cả các ràng buộc, bỏ qua khóa định tuyến trong quá trình định tuyến.

  • Loại đầu vào (Headers): Khớp các tiêu đề trong tin nhắn với các thông số liên kết với tất cả các ràng buộc của trao đổi. Nếu khớp, tin nhắn được gửi đến hàng đợi tương ứng của việc ràng buộc đó (ít được sử dụng, tương tự như loại trực tiếp).

Lưu ý: Giải thích chi tiết về các loại trao đổi sẽ được cung cấp trong các phần sau về các chế độ làm việc. Đây chỉ là một cái nhìn tổng quan.

Ràng buộc (Binding)

Mối quan hệ được sử dụng để thiết lập một kết nối giữa các hàng đợi tin nhắn và các trao đổi.

Hàng đợi (Queue)

Một hàng đợi tin nhắn được sử dụng để lưu trữ các tin nhắn cho đến khi chúng được gửi đến người tiêu dùng. Nó vừa là một container cho tin nhắn, vừa là điểm cuối cho tin nhắn. Một tin nhắn có thể được gửi đến một hoặc nhiều hàng đợi. Các tin nhắn vẫn ở trong hàng đợi, đợi người tiêu dùng kết nối và truy xuất chúng.

Kết nối (Connection)

Một kết nối mạng, ví dụ như một kết nối TCP.

Kênh (Channel)

Một kênh là một kết nối ảo được thiết lập trong một kết nối TCP thực. Tất cả các lệnh AMQP được gửi qua các kênh, cho dù đó là xuất bản tin nhắn, đăng ký hàng đợi, hay nhận tin nhắn. Thiết kế này giới thiệu khái niệm kênh để tái sử dụng một kết nối TCP duy nhất, vì việc thiết lập và chấm dứt kết nối TCP tốn kém cho hệ điều hành.

Người tiêu dùng (Consumer)

Người tiêu dùng của các tin nhắn, đại diện cho một ứng dụng khách hàng lấy tin nhắn từ các hàng đợi tin nhắn.

Máy chủ Ảo (Virtual Host)

Một máy chủ ảo đại diện cho một tập hợp các trao đổi, hàng đợi tin nhắn và các đối tượng liên quan. Đó là một miền máy chủ độc lập chia sẻ môi trường xác thực và mã hóa giống nhau. Mỗi máy chủ ảo về cơ bản là một phiên bản thu nhỏ của một máy chủ RabbitMQ, với các hàng đợi, trao đổi, ràng buộc và cơ chế phân quyền của riêng nó.

Vhosts là một khái niệm cơ bản trong AMQP và phải được chỉ định khi thiết lập một kết nối. Máy chủ ảo mặc định cho RabbitMQ là /.

Lưu ý: Máy chủ ảo là một hình thức của chiến lược cô lập tài nguyên, cho phép phân chia nhiều khu vực cô lập bên trong cùng một máy chủ RabbitMQ.

Môi giới (Broker)

Đại diện cho thực thể máy chủ hàng đợi tin nhắn vật lý.