Trong recovery matrix, Ignore = ack/commit bỏ qua, không retry, không DLQ (hoặc drop sau phân loại). Nghe như tội — đôi khi là quyết định sản phẩm đúng.
Sai lầm hai phía: (1) never ignore → poison kẹt mãi; (2) ignore cho lẹ → missing thầm.
Ignore hợp lý
- Best-effort: push marketing, analytics sample, log phụ — mất vài event trong SLA.
- Duplicate đã dedup: bản sau ack bỏ (đã effect).
- Poison đã triage: data không sửa được, business chấp nhận drop + metric (hiếm; document).
- Schema unknown + policy drop: version không hỗ trợ, có alert tỷ lệ — không im lặng 100%.
Ignore nguy hiểm (mặc định cấm)
- Read / projection phải đủ: ignore = missing view. Matrix: NO trên read trừ metric chấp nhận mất.
- Write money path: bỏ action = mất charge/refund / bước workflow.
- Shared log: bạn ignore không có nghĩa app khác không cần — và bạn không được resend thay ignore lung tung.
- Ignore để “xanh lag”: che nợ correctness.
Ignore vs DLQ vs Unblock
Ignore — biến mất với group này; rẻ; dễ quên audit
DLQ — cất + alert; unblock + còn cơ hội redrive
(xem poison-dlq, dlq-triage, unblock)
Release — giữ message, có thể block lane
Unblock có thể bằng DLQ hoặc ignore. DLQ = “nhả hàng nhưng còn địa chỉ”. Ignore = “nhả và thôi” — chỉ khi product ký.
Hai case product
- OK: event “banner_impression” sample 10% — mất vài bản = OK, có metric drop.
- Không OK: event “payment_captured” ignore vì schema lạ — biến thành missing tiền; phải DLQ + triage.
Làm đúng nếu ignore
- Metric + alert drop rate / reason code.
- Document SLA (“best-effort, có thể mất”).
- Không gộp permanent bug vào ignore để khỏi sửa code.
- Review định kỳ: ignore có tăng bất thường không?
Một câu để nhớ
Ignore là decision sản phẩm, không phải catch rỗng.
Unblock được — correctness phải được nói to.