Сүлжээний ажлыг цуцалж чадах үйлдэлд хугацааг дамжуулна уу. Проксигоор тохируулсан одоо байгаа .NET HttpClient-ийн хувьд:

using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);

Аппликейшн client болон uri-ыг өгдөг. Энэхүү хэт ачаалал цуцлах токеныг хүлээн авдаг; түүний даалгаврыг хүлээх эргэн тойрны хугацааны хязгаар нь зөвхөн тэр дуудагчийн хүлээлтийг хязгаарлана. Дуусах тугийг асуух нь мөн адил асуудалтай: сокет болон ажилчид завгүй хэвээр байхад дуудагч явж болно.

Цуцлалт нь клиентийн хэрэгжүүлэлт болон цэвэрлэх замыг дагана. Энэ нь доод түвшний үйлдэл бүр яг заавар дээр зогсоно гэж амлахгүй. Тэр замыг дуусгахыг зөвшөөрч, үйлдлийн эзэмшдэг нөөцийг чөлөөлнө үү. Дизайндаа тусдаа удирддаг биеийг уншихыг оруулна уу; орчин үеийн .NET ResponseHeadersRead үйлдлийн хувьд мөн токеныг биеийг уншихаар дамжуулна уу. Бусад клиентүүд өөрсдийн цуцлах, зогсоох, цэвэрлэх интерфэйсийг санал болгодог.

Дахин оролдлого нь өмнөх оролдлогын үр дүнг шаарддаг. Түүний таних тэмдэг болон сонгосон проксийг хадгалж, шаардлагатай үед цуцлалт хүсэж, орлуулагчийг хязгааргүй эхлүүлэхдээ даалгавраа алдахаас зайлсхий. Эс бөгөөс удаан төгсгөлийн цэг аппликейшнээс чөлөөлж байгаагаас хурдан ажил хуримтлуулж болно.

Алсын үр дүнд тусдаа харьцах шаардлагатай. Цуцлалт гарах үед хүлээн авагч илгээлтийг аль хэдийн хүлээн авсан байж болно. Аппликейшны сэргээх эсвэл idempotency бодлогыг ашиглана уу; локал ажлыг зогсоох нь алсын үйлдлийг цуцлахгүй.

Холбоотой нийтлэлүүд