<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Service Bus | The .NET Blog</title><link>https://thedotnetblog.com/id/tags/service-bus/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>id</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Thu, 21 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/id/tags/service-bus/index.xml" rel="self" type="application/rss+xml"/><item><title>Berhenti Menghantam Dependensi yang Kesulitan: Pola Retry untuk Azure Functions + Service Bus</title><link>https://thedotnetblog.com/id/news/emiliano-montesdeoca/azure-functions-service-bus-exponential-backoff-circuit-breaker/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/id/news/emiliano-montesdeoca/azure-functions-service-bus-exponential-backoff-circuit-breaker/</guid><description>Pola exponential backoff dan circuit breaker kini didukung secara native untuk Azure Functions yang dipicu Service Bus — inilah cara kerjanya dan mengapa Anda membutuhkan keduanya.</description><content:encoded>&lt;p&gt;Inilah cara kegagalan yang dapat dipulihkan menjadi pemadaman di aplikasi Functions: dependensi mulai timeout, setiap instance Functions langsung retry tanpa batas, dependensi dihantam dengan ratusan permintaan gagal secara bersamaan, dan apa yang dimulai sebagai gangguan sementara berubah menjadi peristiwa backpressure di seluruh sistem.&lt;/p&gt;
&lt;p&gt;Anda mungkin mengenal cerita ini. Azure Functions scale out dengan cepat — itulah seluruh tujuannya. Namun &amp;ldquo;scale out cepat&amp;rdquo; dan &amp;ldquo;retry segera&amp;rdquo; bersama-sama dapat membuat kegagalan menjadi jauh lebih buruk.&lt;/p&gt;
&lt;p&gt;Dua pola membantu. Exponential backoff dan circuit breaker. Keduanya kini didukung secara native untuk Azure Functions yang dipicu Service Bus.&lt;/p&gt;
&lt;h2 id="dua-pola-peran-berbeda"&gt;Dua Pola, Peran Berbeda&lt;/h2&gt;
&lt;p&gt;Pola-pola ini saling melengkapi, bukan alternatif:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exponential backoff&lt;/strong&gt; menjawab: &lt;em&gt;kapan saya harus mencoba lagi?&lt;/em&gt;
Ini meningkatkan penundaan antara retry sehingga dependensi memiliki waktu untuk pulih. Di tingkat pesan, mengatur waktu retry.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Circuit breaker&lt;/strong&gt; menjawab: &lt;em&gt;haruskah saya memanggil dependensi ini sekarang?&lt;/em&gt;
Ini menghentikan panggilan berulang ke dependensi yang tidak sehat setelah ambang kegagalan tercapai, kemudian dengan hati-hati menyelidiki setelah periode pendinginan. Di tingkat sistem, mencegah badai retry.&lt;/p&gt;
&lt;p&gt;Anda menginginkan keduanya. Backoff menangani pengaturan retry per pesan. Circuit breaker menangani keputusan kesehatan agregat.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting-terutama-untuk-service-bus"&gt;Mengapa Ini Penting Terutama untuk Service Bus&lt;/h2&gt;
&lt;p&gt;Antrean menyerap lonjakan trafik, yang merupakan hal baik. Namun tanpa kontrol, antrean dapat tumbuh sementara worker terus membuang sumber daya komputasi pada panggilan yang akan gagal. Pesan beracun tetap aktif lebih lama dari seharusnya. Partisi panas atau kapasitas downstream terbatas menciptakan masalah berjenjang.&lt;/p&gt;
&lt;p&gt;Desain yang lebih aman:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mendeteksi kegagalan sementara&lt;/li&gt;
&lt;li&gt;Menunda upaya berikutnya dengan exponential backoff&lt;/li&gt;
&lt;li&gt;Menghentikan panggilan ke dependensi saat ambang kegagalan tercapai (circuit terbuka)&lt;/li&gt;
&lt;li&gt;Melanjutkan dengan hati-hati setelah periode pendinginan (circuit probe)&lt;/li&gt;
&lt;li&gt;Memindahkan pekerjaan yang tidak dapat dipulihkan ke dead-letter atau jalur karantina&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="tampilan-dukungan-native"&gt;Tampilan Dukungan Native&lt;/h2&gt;
&lt;p&gt;Dukungan baru terintegrasi dengan model host Azure Functions yang ada — tidak ada library tambahan, tidak ada implementasi kustom. Konfigurasi masuk ke &lt;code&gt;host.json&lt;/code&gt; Anda:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;extensions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;serviceBus&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;messageHandlerOptions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxRetryCount&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;retryPolicy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;exponentialBackoff&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;minBackoff&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;00:00:02&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxBackoff&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;00:05:00&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxRetryCount&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Konfigurasi circuit breaker menetapkan ambang kegagalan dan interval reset sehingga dependensi yang tidak sehat tidak dihantam selama pemulihan.&lt;/p&gt;
&lt;h2 id="bahasa-yang-didukung"&gt;Bahasa yang Didukung&lt;/h2&gt;
&lt;p&gt;Ini bukan hanya untuk .NET. Fitur ini mencakup dotnet, JavaScript, TypeScript, dan Python — set lengkap bahasa yang didukung oleh trigger Service Bus di Azure Functions.&lt;/p&gt;
&lt;h2 id="kesimpulan"&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Pola retry tidak menarik untuk dikonfigurasi sampai pertama kali pemadaman downstream menyebabkan Functions Anda memperburuk masalah alih-alih menurun dengan baik. Mengaturnya secara proaktif adalah hal yang murah. Merefaktornya saat insiden tidak demikian.&lt;/p&gt;
&lt;p&gt;Post asli: &lt;a href="https://devblogs.microsoft.com/azure-sdk/exponential-backoff-circuit-breaker-azure-functions/"&gt;Exponential backoff and circuit breaker for Service Bus-triggered Azure Functions&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>