Con trăn thỏmq

Với lập trình viên thì thỏmq giá rất phải chăng, nếu không có các hệ thống môi giới tin nhắn như thỏmq thì bất cứ lúc nào cũng cần trích xuất dữ liệu giữa các thành phần trong hệ thống, lập trình viên cần một kết nối trực tiếp. Thật vậy, RabbitMQ chỉ là một message broker sử dụng giao thức AMQP - Advanced Message Queue Protocol, nó được lập trình bằng ngôn ngữ Erlang, ngoài ra nó cung cấp cho lập trình viên một phương tiện trung gian tiện lợi để giao tiếp giữa nhiều thành viên . Với cách này, RabbitMQ sẽ nhận thông báo đến từ các thành phần khác nhau trong hệ thống, lưu trữ dữ liệu an toàn trước khi đến đích

Hệ thống càng lớn, mức độ trao đổi thông báo giữa các phần càng lớn cũng vì thế càng tăng làm cho việc thiết lập chương trình trở nên phức tạp. Đã có thời kỳ, từng thành viên lập trình chỉ nên tập trung vào logic nghiệp vụ của ứng dụng, còn các công tác hậu trường thì nên tái sử dụng các giải pháp đã có. Rabbitmq cũng là một giải pháp rất hay trong các kiến ​​trúc hệ thống lớn

Có nên sử dụng RabbitMQ?

Trong một hệ thống phân tán sẽ có rất nhiều thành phần khác nhau. Nếu muốn các thành phần này giao tiếp với nhau thì chúng ta phải biết nhau, nhưng điều này lại gây rắc rối cho công việc viết mã. Một phần phải biết quá nhiều đâm ra rất khó bảo trì, gỡ lỗi. Giải pháp ở đây là thay vì các liên kết trực tiếp, khiến các thành phần phải biết nhau nên sử dụng một liên kết trung gian thông qua một nhà môi giới tin nhắn. Với sự tham gia của nhà môi giới tin nhắn, nhà sản xuất sẽ không biết người tiêu dùng. Nó chỉ là công việc gửi tin nhắn đến các hàng đợi trong tin nhắn môi giới. Người tiêu dùng chỉ việc đăng ký nhận tin nhắn từ các hàng đợi này

Có thể hiểu, vì nhà sản xuất nói chuyện với người tiêu dùng trung gian qua tin nhắn môi giới nên dù nhà sản xuất và người tiêu dùng có khác biệt nhau về ngôn ngữ thì giao tiếp vẫn thành công. Dù viết bằng java, python, php hay ruby. thì chỉ cần đáp ứng đủ giao thức với nhà môi giới tin nhắn thì thông suốt hết. Hiện tại, thỏmq cũng đã cung cấp thư viện máy khách cho khá nhiều ngôn ngữ rồi. Tính năng này cho phép tích hợp hệ thống hoạt động

Các loại Exchange trong Rabbitmq

Có 5 loại Exchange. trực tiếp, chủ đề, phát tán, tiêu đề

Trao đổi trực tiếp

Chức năng của trao đổi trực tiếp là đưa thông báo đến hàng chờ đợi dựa trên khóa định tuyến của khóa định tuyến. Loại trao đổi trực tiếp này khá hữu ích khi bạn muốn phân biệt các thông báo được xuất bản cho cùng một trao đổi bằng cách sử dụng một chuỗi mã định danh đơn giản

Trao đổi fanout

Chức năng của trao đổi Fanout sẽ gửi thông báo đến toàn bộ hàng đợi gắn với nó. Nó được coi là một thông báo sao chép tới tất cả những hàng đợi với bất kỳ khóa định tuyến nào. If been posted sign, it will be bypass. Trao đổi này hữu ích với trường hợp ta cần một dữ liệu được gửi tới nhiều thiết bị khác nhau với cùng một tin nhắn nhưng cách xử lý ở mỗi thiết bị, mỗi nơi là khác nhau

chủ đề trao đổi

Trao đổi chủ đề sẽ tạo một ký tự đại diện để gắn khóa định tuyến với một mẫu định tuyến được khai báo trong ràng buộc. Người tiêu dùng có thể đăng ký những chủ đề mà nó quan tâm. Cú pháp được sử dụng ở đây là * và #

Trao đổi tiêu đề

Một trao đổi tiêu đề sẽ sử dụng các thuộc tính tiêu đề của tin nhắn để định tuyến. Headers Exchange rất giống với Topic Exchange, nhưng nó định tuyến dựa trên các giá trị tiêu đề thay vì các khóa định tuyến. Một thông báo được coi là phù hợp nếu giá trị của tiêu đề bằng với giá trị được xác định chỉ khi bị ràng buộc

Trao đổi thư chết

Nếu không tìm thấy hàng đợi phù hợp cho tin nhắn, tin nhắn sẽ tự động bị hủy. RabbitMQ cung cấp một tiện ích mở rộng AMQP được gọi là “Dead Letter Exchange” — Cung cấp chức năng để chụp các tin nhắn không thể gửi được

Tính năng nổi bật của RabbitMQ

Liên kết

Đối với các máy chủ cần kết nối không quá chặt chẽ và có độ tin cậy cao nên với việc phân cụm cho phép, RabbitMQ cung cấp một mô hình liên kết phù hợp với yêu cầu này

Routing linh hoạt

Tin nhắn sẽ được định tuyến thông qua trao đổi trước khi chuyển đến hàng đợi. RabbitMQ cung cấp một số loại trao đổi được tích hợp sẵn cho tuyến logic điển hình. Với các định tuyến phức tạp hơn, bạn có thể liên kết các trao đổi với nhau hoặc thậm chí có thể viết các kiểu trao đổi của riêng bạn như một plugin

Clustering/cụm

RabbitMQ có chức năng nhóm lại với nhau, hợp thành một nhà trung gian duy nhất

Độ tin cậy

RabbitMQ Hỗ trợ nhiều tính năng khác nhau cho phép bạn giao dịch các nhiệm vụ một cách tin cậy, với thời gian lưu lâu hơn, xác nhận giao hàng, xác nhận nhà xuất bản và tính khả dụng cao

Hàng đợi có sẵn tính năng cao

Hàng đợi có thể được nhân bản trên một số máy trong một cụm, đảm bảo tin nhắn của bạn luôn an toàn ngay cả khi xảy ra sự cố phần cứng.

Giao thức

RabbitMQ Hỗ trợ nhắn tin thông qua nhiều giao thức nhắn tin khác nhau

Đa dạng ứng dụng ngôn ngữ

RabbitMQ đã được phát triển với hệ ngôn ngữ phong phú bao gồm hầu hết mọi ngôn ngữ mà bạn có thể nghĩ đến

Giao diện quản lý

Với giao diện quản lý sử dụng dễ dàng, RabbitMQ cho phép bạn theo dõi và kiểm tra mọi vấn đề trong chương trình nhắn tin trung gian

plugin hệ thống

RabbitMQ hỗ trợ một loạt các phần mở rộng của plugin theo nhiều hình thức khác nhau hoặc bạn cũng có thể tự viết các tiện ích mở rộng này

Tracing/Truy vết

Nếu hệ thống nhắn tin của bạn bị lỗi hoặc hoạt động không tốt, RabbitMQ sẽ hỗ trợ các thao tác truy vết để giúp bạn hiểu được hệ thống đang hoạt động như thế nào và vấn đề nào đang phát sinh

Chủ Đề