Topic 2 Question 43
5 mins read

Topic 2 Question 43


Phân tích yêu cầu

  • Ứng dụng Azure Durable Function xử lý danh sách đầu vào.
  • Ứng dụng cần ghi nhận lỗi mà không làm thất bại toàn bộ quá trình.
  • Dữ liệu lỗi phải có sẵn cho ứng dụng giám sát (monitoring console).

Phân tích từng đoạn code

1. Chọn phương thức xử lý lỗi trong Durable Orchestrator

Lựa chọnPhân tíchChọn không?
context.SetOutput(input[errIndex])❌ SetOutput được dùng để đặt đầu ra cuối cùng của function, không phù hợp để ghi log lỗi.❌ Không chọn
context.SetCustomStatus(input[errIndex])✅ SetCustomStatus cho phép lưu trạng thái tùy chỉnh trong quá trình chạy của function, phù hợp để ghi nhận lỗi.✅ Chọn
context.SignalEntity(input[errIndex], “error”)❌ SignalEntity chỉ dùng để gửi tín hiệu đến Durable Entity, không phải để lưu lỗi.❌ Không chọn
await context.CallEntityAsync(input[errIndex], “error”)❌ CallEntityAsync dùng để gọi một Durable Entity, không phù hợp với mục tiêu lưu lỗi.❌ Không chọn

➡️ Lựa chọn chính xác: context.SetCustomStatus(input[errIndex]).


2. Kiểm tra trạng thái trong monitoring console

Lựa chọnPhân tíchChọn không?
Failed❌ Không đúng, vì không phải tất cả lỗi đều làm hỏng function.❌ Không chọn
Awaited❌ Không đúng, vì Awaited không phải là trạng thái của Durable Function.❌ Không chọn
Listening❌ Không đúng, vì trạng thái này không tồn tại trong Durable Functions.❌ Không chọn
Completed✅ runtimeStatus là trường trong Durable Functions chứa trạng thái thực thi, bao gồm “Completed”.✅ Chọn

➡️ Lựa chọn chính xác: Completed.


3. Chọn biến để lấy trạng thái của function

Lựa chọnPhân tíchChọn không?
input❌ Không đúng, vì không chứa trạng thái function.❌ Không chọn
output❌ Không đúng, vì output chỉ chứa dữ liệu trả về cuối cùng.❌ Không chọn
runtimeStatus✅ runtimeStatus là giá trị cần kiểm tra để biết function đã hoàn thành chưa.✅ Chọn
customStatus❌ customStatus chứa trạng thái tùy chỉnh, không phải trạng thái chính của function.❌ Không chọn

➡️ Lựa chọn chính xác: runtimeStatus.


Đáp án chính xác

Vị tríGiá trị đúng
Đặt lỗi trong Orchestratorcontext.SetCustomStatus(input[errIndex])
Kiểm tra trạng thái function"Completed"
Trường kiểm tra trong JSONruntimeStatus

🚀 Lựa chọn này đảm bảo lỗi không làm thất bại toàn bộ function và có thể giám sát từ bên ngoài!


So sánh lời giải với phân tích trước đó

Box 1: await context.CallEntityAsync(input[errIndex], "error")

  • Lời giải chọn CallEntityAsync, nhưng đây không phải là cách tốt nhất để lưu trạng thái lỗi.
  • Giải pháp đúng hơn: context.SetCustomStatus(input[errIndex]) → Vì SetCustomStatus lưu trạng thái lỗi mà không làm hỏng toàn bộ function.
  • ❌ Sai, nên chọn context.SetCustomStatus(input[errIndex]).

Box 2: Failed

  • Lời giải chọn Failed, nhưng yêu cầu là “single instance of invalid input does not cause the function to fail”.
  • Nếu function không bị lỗi hoàn toàn, nó không nênruntimeStatus = Failed.
  • Giải pháp đúng hơn: Completed, vì function vẫn chạy và lưu trạng thái lỗi trong customStatus.
  • ❌ Sai, nên chọn Completed.

Box 3: Input

  • Lời giải chọn Input, nhưng đây không phải giá trị đúng để lấy trạng thái runtime của function.
  • Giải pháp đúng hơn: runtimeStatus, vì cần kiểm tra trạng thái thực thi function.
  • ❌ Sai, nên chọn runtimeStatus.

Kết luận

BoxLời giải đã chọnĐúng/Sai?Lựa chọn đúng
Box 1await context.CallEntityAsync(input[errIndex], "error")❌ Saicontext.SetCustomStatus(input[errIndex])
Box 2Failed❌ SaiCompleted
Box 3Input❌ SairuntimeStatus

🚀 Lời giải đưa ra không chính xác! Đáp án đúng phải là:
✅ context.SetCustomStatus(input[errIndex])
✅ Completed
✅ runtimeStatus

Leave a Reply

Your email address will not be published. Required fields are marked *