Khi tốc độ xử lý tin nhắn của Pub/Sub cao hơn nhiều so với dự kiến mà không có lỗi ghi nhận trong Cloud Logging, điều này chỉ ra hiện tượng tin nhắn bị xử lý lặp đi lặp lại nhiều lần (message redelivery). Hai nguyên nhân chính là:
- E (The subscriber code does not acknowledge the messages that it pulls): Nếu code của Cloud Function không gửi xác nhận (ACK) về cho Pub/Sub sau khi xử lý thành công, Pub/Sub sẽ coi như tin nhắn chưa được xử lý và tiếp tục gửi lại tin nhắn đó sau khi hết thời gian chờ (ack deadline).
- C (Error handling in the subscriber code is not handling run-time errors properly): Nếu code gặp lỗi runtime trong quá trình xử lý nhưng không bắt lỗi (catch) đúng cách để gửi phản hồi lỗi hoặc không gửi ACK/NACK phù hợp, tin nhắn cũng sẽ bị giữ lại và gửi đi gửi lại liên tục.
- A, B, D sai: Các lỗi về quota hay subscriber không xử lý kịp sẽ làm giảm tốc độ xử lý hoặc tăng độ trễ (backlog), chứ không tạo ra tốc độ xử lý ảo lớn đột biến do lặp lại tin nhắn.
(Đáp án được gợi ý bởi AI)