RabbitMQ là gì ?
RabbitMQ là một hệ thống Message Broker, cho phép các thành phần trong hệ thống giao tiếp với nhau bằng cách gửi và nhận các tin nhắn thông qua các hàng đợi.
Các thành phần chính trong RabbitMQ
Producer là nơi gửi tin nhắn vào RabbitMQ (có thể là một api gửi yêu cầu gửi mail)
Exchange là nơi nhận tin nhắn từ Producer và đẩy chúng vào queue dựa trên quy tắc của từng loại Exchange
Queue là nơi lưu trữ các tin nhắn chờ được xử lý
Consumer là nơi lấy tin nhắn từ queue và xử lý nó
Các loại Exchange
Fanout Exchange: gửi tất cả các message đến queue liên kết
Direct Exchange: gửi tin nhắn đến các queue dựa trên một khóa định tuyến cụ thể
Topic Exchange: gửi tin nhắn đến các queue dựa trên pattern của khóa định tuyến
Cách thức hoạt động
Producer —> Exchange —> Queue <— Consumer
Ưu điểm của RabbitMQ
Là giúp hệ thống hoạt động ổn định khi phải xử lý một khối lượng công việc lớn và còn đảm bảo tin nhắn không bị mất.Ngoài ra RabbitMQ còn hỗ trợ tính năng ưu tiên tin nhắn, cho phép xử lý các tin nhắn quan trọng trước các tin nhắn thông thường.
Bài viết khác
Return first
Return first là gì Khi trong hàm gặp một trường hợp đặc biệt (như lỗi, dữ liệu không hợp lệ…), ta trả về kết quả ngay lập tức và kết thúc hàm. Lợi ích khi dùng Return First trong Go Code gọn, dễ đọc Ít phải thụt dòng. Đọc từ trên xuống dưới như một […]
Naming convention
Naming convention là gì? Naming Convention – là một tập hợp các tiêu chuẩn được quy định sẵn dùng để biểu thị cho các thành phần: tên biến, tên hàm, kiểu dữ liệu,… Phong cách đặt tên phổ biến 1. Camel Case Camel Case là kiểu đặt tên con lạc đà. Quy tắc: Chữ cái đầu tiên được viết […]
Seed Data(Goose)
Seed Data là gì? Seed data là tập hợp các cậu lệnh sql hoặc đoạn code để đưa dữ liệu ban đầu vào CSDL. Mục đích Khởi tạo hệ thống với dữ liệu mặc định. Tạo dữ liệu test nhanh chóng. Hỗ trợ kiểm thử tự động (unit test, integration test). Tạo môi trường demo cho […]
Migration
Migration là gì? Migration là một cơ chế cho phép quản lý các thay đổi cấu trúc của cơ sở dữ liệu thông qua các file chứa câu lệnh định nghĩa (SQL hoặc code). Như là tạo bảng mới, thêm, sửa, xóa, cột, thêm index, tạo quan hệ giữa bảng Ưu điểm Đồng bộ: Mọi […]
Ngôn ngữ lập trình Golang
Golang là gì? Go (hay còn gọi là Golang) là một ngôn ngữ lập trình được thiết kế dựa trên tư duy lập trình hệ thống. Go được phát triển bởi Robert Griesemer, Rob Pike và Ken Thompson tại Google vào năm 2007. Điểm mạnh của Go là bộ thu gom rác và hỗ trợ […]
Tìm hiểu Git và GitHub
Git là gì? Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS), nó là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay. Git cung cấp cho mỗi lập trình viên kho lưu trữ (repository) riêng chứa toàn bộ lịch sử thay đổi. Version Control System […]