- vừa được xem lúc

RabbitMQ là gì

0 0 19

Người đăng: Nguyễn Xuân Quang

Theo Viblo Asia

RabbitMQ là gì?

RabbitMQ là một phần mềm trung gian giúp các hệ thống, server, ứng dụng có thể giao tiếp, trao đổi dữ liệu với nhau. Nhiệm vụ của RabbitMQ được hiểu đơn giản là: nhận message từ nhiều nguồn => lưu trữ, sắp xếp sao cho hợp lý => đẩy tới đích đến

Là một message broker mã nguồn mở, có dung lượng nhẹ, dễ dàng triển khai trên rất nhiều hệ điều hành lẫn Cloud, vì thế RabbitMQ vô cùng được ưa chuộng và trở nên phổ biến trong thời gian qua. Vậy chúng ta có câu hỏi, message broker là gì?

Message broker là được thiết kế để validating, transforming và routing messages. Chúng phục vụ các nhu cầu giao tiếp giữa các ứng dụng với nhau.

Với Message broker, ứng dụng nguồn (producer) gửi một message đến một server process mà nó có thể cung cấp việc sắp xếp dữ liệu, routing, message translation, persistence và delivery tất cả điểm đến thích hợp(consumer).

Có 2 hình thức giao tiếp cơ bản với một Message Broker:

  1. Publish và Subscribe (Topcs)
  2. Point-to-Point (Queues)

Ví dụ về RabbitMQ

Ta lấy ví dụ tạo một file và tải về của một trang web mà hàng trăm hàng nghìn user sẽ click vào nút đó, lúc này server sẽ nhận rất nhiều request cùng lúc gây ra chậm, quá tải hoặc nghẽn quá trình tạo file và tải về... Lúc này ta cần đến RabbitMQ để đẩy các request này vào hàng chờ với cơ chế: Một consumer lấy message từ hàng đợi và bắt đầu xử lý file trong lúc một producer đang đẩy thêm những message mới vào hàng đợi. Một request có thể được tạo bằng ngôn ngữ này và xử lý bằng một ngôn ngữ khác. Do đó hai client gửi và nhận sẽ có độ ràng buộc thấp.

Cơ bản về RabbitMQ với Golang và Docker

Cài đặt: Các bạn có thể lên trang rabbitmq.com để thêm thông tin cài đặt nhé, ở đây mình sẽ sử dụng qua docker với ubuntu cho tiện hehe:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management

image.png Thế này là RabbitMQ đã chạy thành công rồi nha, tiếp theo chúng ta sẽ demo cách thức hoạt động nhé: Chúng ta sẽ có 3 thứ cần lưu ý ở đây: image.png Ta có P nghĩa là Producer có trách nhiệm gửi message. C là một consumer sử dụng để đợi nhận message. Chúng ta có gửi và nhận message thì cuối cùng ta có image.png Queue sẽ là nơi lưu trữ các mesage bên trong, nhiều Producer có thể gửi messages vào 1 queue và cũng nhiều consumers có thể nhận messages từ 1 queue đó. Chúng ta sẽ bắt đầu với basic của RabbitMQ nhé.

go get github.com/streadway/amqp

Ta cài thư việt amqp sau đó tạo một cấu trúc file như sau: image.png Sau đó chúng ta sẽ tạo ra một helper func để kiểm tra giá trị mà amql gọi về trong send.go

func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) }
}

Tiếp đến ta connect đến RabbitMQ qua port 5672 và tạo 1 channel để chứa API khi hoàn thành: image.png Ta khởi tạo một Queue và Publish để send message đi nhe: image.png Đến với receive/receive.go ta vẫn có failOnError để kiểm trả value trả về, connect và tạo ra channel để chứa API hoàn thành: image.png Phần dưới: image.png Ta yêu cầu server gửi một tin nhắn từ Queue. Vì nó push những message asynchronously( bất đồng bộ) cho nên ta sẽ đọc tin nhắn từ channel ( return amqp::Consume) trong goroutine.

Cuối cùng sau khi hoàn thành 2 file ta chạy lệnh ở 2 file cùng kết quả ta nhận được: image.png Các thông tin kết nối từ RabbitMQ server: image.png

Tóm lại

Mình đã tóm tắt lại các thông tin cũng như cách thức hoạt động cơ bản về RabbitMQ. Tuy nhiên vẫn sẽ còn những điều khó hiểu ở đây, mình sẽ đi sâu hơn để các bạn có thể thấy rõ ứng dụng của RabbitMQ trong blog sau nhé. Hy vọng bài viết sẽ giúp ích các bạn, have a nice day ❤️.

Bài viết đã tham khảo:

Tìm hiểu và sử dụng RabbitMQ

RabbitMQ and Go

RabbitMQ là gì? Tìm hiểu và sử dụng RabbitMQ

Bình luận

Bài viết tương tự

- vừa được xem lúc

Message broker là gì? Sơ lược về RabbitMQ và ứng dụng demo

Trong kiến trúc cloud (hay microservices), các ứng dụng được chia thành những khối độc lập nhỏ hơn để có thể dễ dàng develop, deploy và maintain. Hãy thử tưởng tượng bạn có một kiến trúc cloud có nhiề

0 0 49

- vừa được xem lúc

Serving ML Models in Production with FastAPI and Celery

Overview. Bạn đang không biết triển khai mô hình Machine Learning của bạn cho dự án thực tế bạn đang làm thì đọc bài này là đúng rồi đó (đùa thui).

0 0 31

- vừa được xem lúc

Smallrye Reactive Messaging RabbitMQ với Quarkus

Mở đầu. RabbitMQ không còn là chủ đề mới lạ với anh em lập trình, tuy nhiên trong bài biết này mình giới thiệu tới mọi người kết nối tới RabbitMQ bằng smallrye trong Quarkus.

0 0 46

- vừa được xem lúc

[System design] - Redis vs Kafka vs RabbitMQ

Khi sử dụng giao tiếp không đồng bộ trong hệ thống microservice, phổ biến nhất đó là chúng ta sẽ sử dụng một message broker. Message broker đảm bảo giao tiếp giữa các microservice một cách đáng tin cậ

0 0 47

- vừa được xem lúc

Xây dựng RabbitMQ sử dụng Docker và Nodejs

RabbitMQ là gì. Đây là kiến trúc cơ bản của một message queue:. . Producer : là ứng dụng client, tạo message và publish tới broker.

0 0 21

- vừa được xem lúc

Tìm hiểu về RabbitMQ

1. Khái niệm.

0 0 18