เรามี Azure Storage Queue ซึ่งทริกเกอร์ฟังก์ชัน Azure เมื่อเพย์โหลด/ข้อความเข้าสู่คิว ฟังก์ชันที่กระตุ้นคิวจะเรียกใช้ฟังก์ชันที่คงทนอีกฟังก์ชันหนึ่งเพื่อประมวลผลข้อความ/เพย์โหลด
นี่คือข้อมูลโค้ด:
[FunctionName("QueueTriggerFunction")]
public Task QueueTriggerFunction(
[QueueTrigger("MyQueue", Connection = "MyStorage")]string item,
[OrchestrationClient] DurableOrchestrationClient client,
ILogger log)
=> client.StartNewAsync("Processor", JsonConvert.DeserializeObject<MyObject>(item));
และฟังก์ชันคงทนดูเหมือนตัวอย่างโค้ดต่อไปนี้:
[FunctionName("Processor")]
public async Task ConcurrencyProcessorAsync(
[OrchestrationTrigger] DurableOrchestrationContext context,
ILogger log)
{
var myObject= context.GetInput<MyObject>();
if(ObjectProcessor(myObject) == false)
{
throw new Exception("Processor failed");
}
}
ฉันต้องการให้เพย์โหลดจบลงในคิวข้อความพิษหากข้อยกเว้นข้างต้นเกิดขึ้นเมื่อล้มเหลวในเมธอด ObjectProcessor
แต่มันไม่ได้เกิดขึ้นในความเป็นจริง เพราะข้อยกเว้นไม่ได้เดือดพล่านผ่านไคลเอนต์ orchestrator ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีทำให้ข้อยกเว้นนี้ถูกส่งกลับไปยังฟังก์ชันผู้โทรซึ่งเป็นตัวกระตุ้นคิวเพื่อให้เพย์โหลดปรากฏในคิวข้อความพิษ