RabbitMQ: Zero to Hero
Sê-ri 40 bài đi từ thông điệp đầu tiên tới định tuyến, độ tin cậy, Spring AMQP, quorum queue và vận hành trên sản xuất. Mỗi bài có mã chạy được và số đo thật.
15/40 phần đã đăng
RabbitMQ
1
Đẩy vào hàng đợi nhanh hơn gọi thẳng 700 lần, mà việc vẫn xong đúng vào lúc cũ
Đo thật hai cách gọi một dịch vụ chậm: hàng đợi rút phản hồi từ 464 ms xuống dưới 1 ms, nhưng tổng thời gian làm xong việc không đổi.
11/07/2026
· 6 phút đọc
2
Cổng 5672 mở sau 6 mili giây, nhưng broker chưa sẵn sàng cho tới giây thứ 2,4
Dựng RabbitMQ bằng Docker chỉ mất một tệp compose. Bốn cái bẫy đi kèm thì mất cả buổi chiều — bài này đo từng cái một.
12/07/2026
· 6 phút đọc
3
Một channel dùng lại gửi nhanh gấp 1 128 lần mở connection mỗi thông điệp
Năm khái niệm của AMQP 0-9-1 và quan hệ giữa chúng, đo bằng số: giá mở connection, giá mở channel, và chỗ thông điệp lặng lẽ biến mất.
13/07/2026
· 5 phút đọc
4
Consumer đứt kết nối giữa chừng, năm thông điệp quay lại hàng đợi — và cả năm mang cờ redelivered
Mổ từng tham số của basicPublish và basicConsume, đo vòng đời Ready → Unacked → xong, và cờ mandatory bắt lại thông điệp lạc đường.
14/07/2026
· 5 phút đọc
5
rabbitmq-diagnostics ping xanh ở giây 1,5, còn broker tới giây 4,2 mới nhận nổi một kết nối
Ba đường nhìn vào broker — giao diện, rabbitmqctl và HTTP API. Lệnh kiểm tra nào nói thật, và vì sao số trên giao diện chậm hơn CLI bảy lần.
15/07/2026
· 5 phút đọc
6
Dòng khai báo hàng đợi trong mọi hướng dẫn RabbitMQ đã bị cấm từ bản 4 — và nó giết cả connection
Bốn cờ khai báo hàng đợi, tám tổ hợp và hai cái không còn được phép. Kèm bốn mã lỗi hay gặp và phạm vi sát thương của từng cái.
16/07/2026
· 5 phút đọc
7
deliveryMode=2 đo ra nhanh hơn deliveryMode=1, vì cả hai đều đã nằm sẵn trên đĩa
Ba phần của một thông điệp AMQP, bốn thuộc tính broker thật sự dùng, và phép đo lật ngược lời khuyên «persistent thì chậm».
17/07/2026
· 6 phút đọc
8
Direct exchange khớp khoá đúng từng ký tự, và 500 binding không làm nó chậm đi chút nào
Kiểu định tuyến đơn giản nhất của RabbitMQ: năm biến thể của cùng một khoá chỉ một cái tới đích, và phép đo cho thấy số binding không ảnh hưởng thông lượng.
18/07/2026
· 5 phút đọc
9
Fanout tới 100 hàng đợi: thông lượng tụt 68 lần, còn số bản ghi mỗi giây thì gần như không đổi
Fanout bỏ qua routing key và chép thông điệp cho mọi hàng đợi. Đo cái giá của việc phát tán, và phân biệt chia việc với phát tán.
19/07/2026
· 4 phút đọc
10
Mẫu binding «don.#» khớp cả routing key «don» — vì dấu # ăn được cả không từ nào
Bảng khớp đầy đủ của topic exchange: chín mẫu nhân bảy khoá, đo thật. Khác biệt giữa * và #, và phép đo cho thấy topic gần như miễn phí.
20/07/2026
· 5 phút đọc
11
Headers exchange chạy bằng 42% tốc độ direct, và header «1» không khớp binding 1
Kiểu exchange thứ tư của RabbitMQ: khớp theo bảng header với x-match all hoặc any. Đo hiệu năng, chỉ ra cái bẫy kiểu dữ liệu, và nói thẳng khi nào nên dùng.
21/07/2026
· 6 phút đọc
12
Hàng đợi chỉ nghe «don.vn.#» vẫn nhận được thông điệp gửi thẳng bằng tên nó
Default exchange là một exchange thật với binding ngầm không gỡ được — và là cửa sau vòng qua mọi luật định tuyến bạn dựng lên.
22/07/2026
· 5 phút đọc
13
Bật alternate exchange xong, ReturnListener im lặng — vì thông điệp đã có đường đi
Hứng thông điệp không định tuyến được thay vì để nó bốc hơi. Alternate exchange khác mandatory thế nào, và cái giá đo được của nó.
23/07/2026
· 5 phút đọc
14
Vòng lặp DLX bằng TTL bị broker xoá âm thầm, còn vòng lặp bằng reject thì quay mãi mãi
Ba nguyên nhân đưa thông điệp vào dead letter exchange, cách đọc header x-death, và hai kiểu vòng lặp hỏng theo hai hướng ngược nhau.
24/07/2026
· 4 phút đọc
15
5 000 hàng đợi tốn 319 MiB và 16 giây để dựng, nhưng chỉ thêm 1 giây khi khởi động lại
Ba cách bố trí exchange cho một hệ thống thật, cái giá đo được của topology lớn, và quy ước đặt tên quyết định luôn cả phân quyền.
25/07/2026
· 5 phút đọc
Còn 25 phần nữa sẽ lần lượt được đăng.