inflearn logo

Các trường hợp sử dụng RabbitMQ trong thực tế

Tìm hiểu nguyên lý và các mô hình thực tế để giải quyết vấn đề liên kết (coupling) của các cuộc gọi đồng bộ bằng Message Broker. Thông qua kịch bản trung tâm thương mại, bạn sẽ được học một cách hệ thống phương pháp thiết kế hệ thống bất đồng bộ đáng tin cậy, từ cấu trúc Exchange·Queue·Binding cho đến Retry·DLQ·Tính lũy đẳng (Idempotency)·Transactional Outbox. Bạn có thể hiểu rõ ranh giới giữa RabbitMQ và Kafka, từ đó thiết lập tiêu chuẩn sử dụng Message Queue một cách phù hợp.

3 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

Java
Java
Spring Boot
Spring Boot
rabbitmq
rabbitmq
system-design
system-design
asynchronous-programming
asynchronous-programming
Java
Java
Spring Boot
Spring Boot
rabbitmq
rabbitmq
system-design
system-design
asynchronous-programming
asynchronous-programming

Bạn sẽ nhận được điều này sau khi học.

  • Thiết kế kiến trúc bất đồng bộ dựa trên Message Broker và phân loại 5 mô hình nhắn tin (messaging patterns)

  • Hiểu các cơ chế đảm bảo độ tin cậy như Thử lại (Retry), DLQ (Dead Letter Queue), Tính lũy đẳng (Idempotency), và Transactional Outbox.

  • Thiết lập tiêu chuẩn đánh giá áp dụng Message Queue và hướng dẫn lựa chọn giữa RabbitMQ · Kafka

🤔 Khoảnh khắc khi bạn nhấn nút đăng ký nhưng màn hình lại bị đơ trong suốt 3 giây

Có lẽ bạn đã từng trải qua trải nghiệm như thế này ít nhất một lần. Khi có yêu cầu đăng ký thành viên, người dùng sẽ được lưu vào DB, và sau đó một email chào mừng sẽ được gửi đi. Mọi thứ đều hoàn hảo ở môi trường local. Thế nhưng khi đưa lên vận hành, từ một ngày nào đó, phản hồi đăng ký thành viên bỗng mất 3 giây, rồi 5 giây. Khi tìm hiểu nguyên nhân, hóa ra chỉ là do máy chủ email tạm thời bị chậm. Dịch vụ của chúng ta vẫn ổn định, nhưng vì tình trạng máy chủ của bên khác mà người dùng của chúng ta phải nhìn chằm chằm vào biểu tượng loading.

Khi đơn vị thanh toán chậm trễ, việc đặt hàng sẽ bị chậm lại, và khi quá trình chuyển đổi hình ảnh mất nhiều thời gian, việc tải lên sẽ bị dừng lại. Việc những tác vụ lẽ ra không liên quan đến nhau lại bị buộc vào một hàng và cản trở lẫn nhau — RabbitMQ chính là công cụ để tháo gỡ nút thắt này. Tuy nhiên, khi bắt đầu học, bạn sẽ vấp phải những rào cản. "Có rất nhiều mô hình, nhưng khi nào thì nên dùng cái nào?", "Bật chế độ thử lại thì lại xảy ra thanh toán trùng lặp?", "Tạm thời chuyển hết sang hàng đợi thì mọi thứ lại trở nên phức tạp hơn."

Khóa học này sẽ vượt qua rào cản đó bằng các khái niệm và khả năng phán đoán.

📌 Khóa học này sẽ được tiến hành như sau

Đây là bài giảng tập trung vào giải thích khái niệm. Không có phần thực hành gõ mã theo hướng dẫn.

Trong thời đại AI viết code thay cho con người, năng lực thực sự không nằm ở việc học thuộc lòng cú pháp. Nó đến từ khả năng phán đoán "tại sao, khi nào và nên xử lý công việc này theo mô hình nào". Đó chính xác là mục tiêu mà khóa học này hướng tới.

  • Chúng tôi cung cấp tài liệu bài giảng được sắp xếp khoa học, đồng thời giải thích các khái niệm và luồng tư duy thông qua các hình ảnh slide được tạo từ chính tài liệu đó.

  • Mã ví dụ chỉ xuất hiện như một tài liệu để hiểu "tại sao lại viết như thế này" — bạn không cần phải thiết lập môi trường và gõ theo bằng tay.

  • Sau khi hoàn thành khóa học, thứ bạn nhận được không phải là một dự án đã hoàn thiện, mà là khung tư duy để phán đoán nên sử dụng mô hình nào, trong tình huống nào và tại sao.

✨ Lý do tại sao bài giảng này lại đặc biệt

🗺️ 1. Xuyên suốt 20 bài giảng với duy nhất một kịch bản trung tâm mua sắm

Các khái niệm không bị rời rạc. Một trang mua sắm CRUD bình thường ShopMQ sẽ phát triển xuyên suốt bài giảng. Thay đổi thông báo thành bất đồng bộ → chuyển đổi hình ảnh sang Worker → tách các tác vụ sau khi đặt hàng thành sự kiện → cô lập lỗi thanh toán → và thậm chí là gửi thông báo thời gian thực đến trình duyệt. Vì bạn tiếp cận các mô hình trong cùng một ngữ cảnh, bạn sẽ tự nhiên hiểu được "tại sao khái niệm đó lại cần thiết ngay tại vị trí này".

🎯 2. Một khung phán đoán duy nhất xuyên suốt mọi mô hình

"Phản hồi ngay bây giờ, xử lý sau, và xử lý lại nếu thất bại."

Ba nhịp điệu này chính là khung xương của toàn bộ bài giảng. Ngay khoảnh khắc bạn nhận ra 12 mẫu hình thực chất là những biến thể của nguyên tắc này, dù có gặp phải tình huống mới không có trong bài giảng, bạn vẫn sẽ "Cái này thuộc về nhịp nào trong ba nhịp này?" và tự mình tìm ra câu trả lời.

🛡️ 3. Không chỉ dừng lại ở việc "Gửi tin nhắn"

Hầu hết các khóa học về Queue đều dừng lại ở việc phát hành và tiêu thụ. Tuy nhiên, trong thực tế, những sự cố thực sự thường xảy ra ở các bước tiếp theo. Khóa học này dành riêng một phần lớn để đi sâu vào độ tin cậy và khả năng phục hồi — bao gồm Exponential Backoff Retry, DLQ (Dead Letter Queue), tính lũy đẳng (Idempotency), Transactional Outbox và chính sách ACK. Khóa học sẽ trả lời các câu hỏi như "Tại sao việc thử lại và tính lũy đẳng nhất thiết phải đi đôi với nhau?" hay "Tại sao các sự kiện lại biến mất một cách lặng lẽ?" dựa trên các nguyên lý cốt lõi.

🧭 4. Chỉ ra cho bạn biết khi nào 'không nên sử dụng'

Khi học về Queue, bạn sẽ muốn giải quyết mọi thứ bằng Queue. Tuy nhiên, Queue cũng có chi phí của nó. Khóa học này sẽ chỉ ra một cách trung thực các trường hợp lạm dụng, dùng sai cách và ranh giới giữa RabbitMQ ↔ Kafka ↔ Bộ lập lịch chuyên dụng. Khả năng phán đoán để tránh tình trạng "thêm Queue vào chỉ khiến mọi thứ phức tạp hơn" chính là vũ khí thực dụng nhất mà khóa học này để lại cho bạn.

🃏 Bí kíp độc quyền của bài giảng này

① Xuyên suốt 20 bài giảng với một mô hình trung tâm mua sắm · ② Khung phán đoán ba nhịp · ③ Đi sâu vào cả tính tin cậy và khả năng phục hồi · ④ Đến cả việc khi nào nên tránh và ranh giới với Kafka

🎓 Những điều bạn có thể làm sau khi hoàn thành khóa học này

  • Có thể giải thích rõ ràng các vấn đề về kết hợp (hiệu suất, lỗi, mở rộng, thay đổi) do gọi đồng bộ tạo ra.

  • Bạn có thể phân biệt Exchange·Queue·Bindingnăm mô hình nhắn tin bao gồm Work Queue·Pub/Sub·Routing·Topic·RPC.: Work Queue·Pub/Sub·Routing·Topic·RPC.

  • Trước một công việc mới, bạn có thể tự mình đánh giá bằng ba câu hỏi: "Đây có phải là việc nên chuyển qua Queue không?".

  • Phân biệt giữa Sự kiện và Lệnh, đồng thời trang bị tư duy thiết kế để tách biệt các dịch vụ bằng định tuyến Fanout/Topic., and develop a design sense for decoupling services using Fanout/Topic routing.

  • Hiểu cách thức Retry, DLQ, tính lũy đẳng và Outbox kết hợp với nhau để tạo nên độ tin cậy như thế nào.

  • Hiểu được ranh giới giữa RabbitMQ và các công cụ khác, đồng thời trang bị nhãn quan để tránh việc lạm dụng hoặc sử dụng sai cách.

🚀 Khả năng phán đoán vẫn phải luôn là của chính bạn

Điều mà khóa học này mang lại không phải là một "trang mua sắm đang hoạt động", mà là một khung tư duy giúp bạn tự nhiên đặt câu hỏi "Việc này có nên chuyển qua Queue không?" trước mỗi tác vụ mới.

Các cú pháp chi tiết sẽ được AI hỗ trợ. Tuy nhiên, khả năng phán đoán nên tạo ra cái gì và tại sao vẫn phải là của chính bạn. Chúng ta sẽ cùng nhau rèn luyện khả năng đó.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển backend đã có kinh nghiệm phát triển Spring Boot CRUD và đang cân nhắc việc áp dụng hệ thống nhắn tin bất đồng bộ.

  • Các nhà phát triển cấp Junior và Middle muốn hệ thống hóa các khái niệm và mô hình thực tế của RabbitMQ.

  • Nhà phát triển cần học về phỏng vấn thiết kế hệ thống và kiến trúc microservices

Cần biết trước khi bắt đầu?

  • Kinh nghiệm sử dụng cú pháp Java cơ bản và framework Spring Boot

  • Phát triển RESTful API và hiểu về phương thức giao tiếp HTTP

  • Khái niệm cơ bản về JPA và kiến thức nền tảng về giao dịch cơ sở dữ liệu (database transaction)

Xin chào
Đây là oncoding

698

Học viên

13

Đánh giá

20

Trả lời

4.3

Xếp hạng

8

Các khóa học

Chương trình giảng dạy

Tất cả

22 bài giảng ∙ (6giờ 13phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của oncoding

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

15.400 ₫

30%

472.688 ₫