Menangani kesalahan/kegagalan yang terjadi di Azure Durable Functions yang dipanggil oleh Azure Functions yang dipicu antrean

Kami memiliki Antrean Penyimpanan Azure yang memicu fungsi biru setelah muatan/pesan masuk ke antrean. Fungsi yang dipicu antrean memanggil fungsi tahan lama lainnya untuk memproses pesan/muatan.

Ini dia cuplikan kodenya:

        [FunctionName("QueueTriggerFunction")]
        public Task QueueTriggerFunction(
            [QueueTrigger("MyQueue", Connection = "MyStorage")]string item,
            [OrchestrationClient] DurableOrchestrationClient client,
            ILogger log)
            => client.StartNewAsync("Processor", JsonConvert.DeserializeObject<MyObject>(item));

Dan fungsi tahan lamanya terlihat seperti contoh kode berikut:

[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");
            }
        }

Saya ingin payload berakhir di antrian pesan beracun jika pengecualian di atas dimunculkan setelah metode ObjectProcessor gagal tetapi itu tidak terjadi pada kenyataannya karena pengecualian tidak muncul melalui klien orkestrator. Adakah saran tentang cara membuat pengecualian ini dikembalikan ke fungsi pemanggil yang dipicu antrian untuk membuat payload muncul di antrian pesan racun?


person Arash    schedule 27.06.2019    source sumber


Jawaban (1)


Anda tidak bisa.

QueueTriggerFunction baru saja memulai Orchestration. Setelah itu siklus hidupnya berakhir.

Saya yakin Anda dapat langsung menambahkan payload Anda ke antrian racun menggunakan Azure Storage Services REST API atau Perpustakaan .Net

Harap dicatat bahwa nama antrian racun == $"{queueName}-poison"

person Nafis Islam    schedule 27.06.2019