Quay lại bộ đề
Question #247 Topic 1
You are updating the code for a subscriber to a Pub/Sub feed. You are concerned that upon deployment the subscriber may erroneously acknowledge messages, leading to message loss. Your subscriber is not set up to retain acknowledged messages. What should you do to ensure that you can recover from errors after deployment?
Bạn đang cập nhật mã nguồn cho một subscriber đăng ký nguồn cấp dữ liệu Pub/Sub. Bạn lo ngại rằng sau khi triển khai (deploy), subscriber có thể xác nhận đã nhận tin nhắn (acknowledge) nhầm, dẫn đến mất mát tin nhắn. Subscriber của bạn chưa được thiết lập để giữ lại các tin nhắn đã xác nhận. Bạn nên làm gì để đảm bảo rằng bạn có thể khôi phục từ các lỗi sau khi triển khai?
A
Set up the Pub/Sub emulator on your local machine. Validate the behavior of your new subscriber logic before deploying it to production.
Thiết lập trình giả lập Pub/Sub trên máy cục bộ của bạn. Xác thực hành vi của logic subscriber mới trước khi triển khai nó lên môi trường production.
B
Create a Pub/Sub snapshot before deploying new subscriber code. Use a Seek operation to re-deliver messages that became available after the snapshot was created.
Tạo một snapshot Pub/Sub trước khi triển khai mã nguồn subscriber mới. Sử dụng thao tác Seek để phân phối lại các tin nhắn đã khả dụng sau khi snapshot được tạo.
C
Use Cloud Build for your deployment. If an error occurs after deployment, use a Seek operation to locate a timestamp logged by Cloud Build at the start of the deployment.
Sử dụng Cloud Build để triển khai. Nếu xảy ra lỗi sau khi triển khai, hãy sử dụng thao tác Seek để xác định vị trí dấu thời gian (timestamp) do Cloud Build ghi lại vào lúc bắt đầu triển khai.
D
Enable dead-lettering on the Pub/Sub topic to capture messages that aren't successfully acknowledged. If an error occurs after deployment, re-deliver any messages captured by the dead-letter queue.
Bật tính năng dead-lettering trên Pub/Sub topic để ghi lại các tin nhắn không được xác nhận thành công. Nếu xảy ra lỗi sau khi triển khai, hãy phân phối lại bất kỳ tin nhắn nào bị ghi lại bởi hàng đợi dead-letter.
Giải thích & Tài liệu tham khảo
Để bảo vệ chống lại lỗi ghi nhận (acknowledge) nhầm tin nhắn trong quá trình triển khai mã mới:
- Tạo Pub/Sub snapshot trước khi triển khai và dùng Seek (Lựa chọn B): Tạo snapshot của một subscription ghi lại trạng thái của tất cả các tin nhắn chưa được xác nhận tại thời điểm đó. Nếu mã subscriber mới hoạt động lỗi và xác nhận nhầm tin nhắn, bạn có thể thực hiện thao tác Seek để đưa subscription quay lại thời điểm của snapshot, từ đó phân phối lại toàn bộ các tin nhắn đó.
- Lựa chọn A: Trình giả lập Pub/Sub rất hữu ích cho việc kiểm thử cục bộ nhưng không giúp khôi phục các tin nhắn thực tế trên production nếu có sự cố xảy ra sau khi triển khai.
- Lựa chọn C: Thao tác Seek theo dấu thời gian chỉ hoạt động nếu subscription được cấu hình giữ lại các tin nhắn đã xác nhận (
retain_acked_messagesđược bật), điều này trái với giả thiết của đề bài. - Lựa chọn D: Hàng đợi dead-letter chỉ lưu các tin nhắn không được xác nhận sau nhiều lần thử lại (nack), chứ không bắt được các tin nhắn bị xác nhận nhầm (erroneously acknowledged).
(Đáp án được gợi ý bởi AI)