<?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>Resilience | The .NET Blog</title><link>https://thedotnetblog.com/ca/tags/resilience/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ca</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/ca/tags/resilience/index.xml" rel="self" type="application/rss+xml"/><item><title>Deixa de Martillar una Dependència en Dificultats: Patrons de Reintent per a Azure Functions + Service Bus</title><link>https://thedotnetblog.com/ca/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/ca/news/emiliano-montesdeoca/azure-functions-service-bus-exponential-backoff-circuit-breaker/</guid><description>La retirada exponencial i els patrons de circuit breaker ara estan suportats de manera nativa per a Azure Functions activades per Service Bus — aquí tens com funcionen i per què vols tots dos.</description><content:encoded>&lt;p&gt;Aquí tens com una fallada recuperable es converteix en una interrupció en una aplicació de Functions: una dependència comença a donar timeout, cada instància de Function reintenta immediatament i indefinidament, la dependència rep centenars de sol·licituds fallides concurrents, i el que va començar com un problema transitori es converteix en un event de contrapressió a tot el sistema.&lt;/p&gt;
&lt;p&gt;Probablement coneixes aquesta història. Azure Functions escala ràpidament — aquest és tot el punt. Però &amp;ldquo;escalar ràpidament&amp;rdquo; i &amp;ldquo;reintentar immediatament&amp;rdquo; junts poden empitjorar dramàticament les fallades.&lt;/p&gt;
&lt;p&gt;Dos patrons ajuden. Retirada exponencial i circuit breaker. Tots dos ara estan suportats de manera nativa per a Azure Functions activades per Service Bus.&lt;/p&gt;
&lt;h2 id="dos-patrons-rols-diferents"&gt;Dos Patrons, Rols Diferents&lt;/h2&gt;
&lt;p&gt;Aquests patrons són complementaris, no alternatives:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La retirada exponencial&lt;/strong&gt; respon: &lt;em&gt;quan hauria de tornar a intentar-ho?&lt;/em&gt;
Augmenta el retard entre reintentos perquè una dependència tingui temps de recuperar-se. A nivell de missatge, marcant el ritme del temporitzador de reintent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El circuit breaker&lt;/strong&gt; respon: &lt;em&gt;hauria de cridar aquesta dependència ara mateix?&lt;/em&gt;
Atura les cridades repetides a una dependència poc saludable després d&amp;rsquo;assolir un llindar de fallades, i després sonda curosament després d&amp;rsquo;un període de refredament. A nivell de sistema, prevenint tempestes de reintentos.&lt;/p&gt;
&lt;p&gt;Vols tots dos. La retirada gestiona el ritme de reintent per missatge. El circuit breaker gestiona les decisions de salut agregades.&lt;/p&gt;
&lt;h2 id="per-què-importa-especialment-per-a-service-bus"&gt;Per Què Importa Especialment per a Service Bus&lt;/h2&gt;
&lt;p&gt;La cua absorbeix el tràfic en ràfegues, cosa que és bona. Però sense controls, la cua pot créixer mentre els workers continuen malbaratant còmput en cridades que fallaran. Els missatges enverinats romanen actius més temps del que haurien. Les particions calentes o la capacitat aigüestaixa agüestaires creen problemes en cascada.&lt;/p&gt;
&lt;p&gt;El disseny més segur:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Detectar la fallada transitòria&lt;/li&gt;
&lt;li&gt;Retardar el proper intent amb retirada exponencial&lt;/li&gt;
&lt;li&gt;Aturar les cridades a la dependència quan s&amp;rsquo;assoleix un llindar de fallades (circuit obert)&lt;/li&gt;
&lt;li&gt;Reprendre curosament després d&amp;rsquo;un període de refredament (sonda de circuit)&lt;/li&gt;
&lt;li&gt;Moure el treball irrecuperable a dead-letter o a una ruta de quarantena&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="com-és-el-suport-natiu"&gt;Com és el Suport Natiu&lt;/h2&gt;
&lt;p&gt;El nou suport s&amp;rsquo;integra amb el model d&amp;rsquo;host existent d&amp;rsquo;Azure Functions — sense llibreries addicionals, sense implementacions personalitzades. La configuració va al teu &lt;code&gt;host.json&lt;/code&gt;:&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;La configuració del circuit breaker estableix el llindar de fallades i l&amp;rsquo;interval de restabliment perquè les dependències poc saludables no siguin assetjades durant la recuperació.&lt;/p&gt;
&lt;h2 id="llenguatges-coberts"&gt;Llenguatges Coberts&lt;/h2&gt;
&lt;p&gt;Això no és només per a .NET. La funcionalitat cobreix dotnet, JavaScript, TypeScript i Python — el conjunt complet de llenguatges suportats pel trigger de Service Bus a Azure Functions.&lt;/p&gt;
&lt;h2 id="conclusió"&gt;Conclusió&lt;/h2&gt;
&lt;p&gt;Els patrons de reintent no són emocionants de configurar fins la primera vegada que una interrupció aigüestaixa de downstream fa que les teves Functions empitjorin el problema en lloc de degradar-se gràcilment. Configurar-los de manera proactiva és barat. Implementar-los durant un incident no ho és.&lt;/p&gt;
&lt;p&gt;Post original: &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>