การจัดการข้อผิดพลาด/ความล้มเหลวเกิดขึ้นในฟังก์ชัน Azure Durable ที่ถูกเรียกโดยฟังก์ชัน Azure ที่กระตุ้นคิว

เรามี 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 ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีทำให้ข้อยกเว้นนี้ถูกส่งกลับไปยังฟังก์ชันผู้โทรซึ่งเป็นตัวกระตุ้นคิวเพื่อให้เพย์โหลดปรากฏในคิวข้อความพิษ




คำตอบ (1)


คุณไม่สามารถ.

QueueTriggerFunction เพิ่งเริ่มต้น Orchestration หลังจากนั้นวงจรชีวิตก็สิ้นสุดลง

ฉันเชื่อว่าคุณสามารถเพิ่มเพย์โหลดของคุณลงในคิวพิษได้โดยตรงโดยใช้ Azure Storage Services REST API หรือ ไลบรารี .Net

โปรดทราบว่าชื่อคิวพิษ == $"{queueName}-poison"

person Nafis Islam    schedule 27.06.2019