<?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/ja/tags/service-bus/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ja</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/ja/tags/service-bus/index.xml" rel="self" type="application/rss+xml"/><item><title>苦しんでいる依存関係を叩き続けるのをやめよう：Azure Functions + Service Bus のリトライパターン</title><link>https://thedotnetblog.com/ja/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/ja/news/emiliano-montesdeoca/azure-functions-service-bus-exponential-backoff-circuit-breaker/</guid><description>指数バックオフとサーキットブレーカーパターンが、Service Bus でトリガーされる Azure Functions でネイティブサポートされるようになりました — どのように機能するか、なぜ両方が必要なのかを説明します。</description><content:encoded>&lt;p&gt;Functions アプリで回復可能な障害がサービス停止に変わる経緯はこうです：依存関係がタイムアウトし始め、すべての Functions インスタンスが即座に無限にリトライし、依存関係は数百の同時失敗リクエストで叩かれ、一時的な問題として始まったものがシステム全体のバックプレッシャーイベントになります。&lt;/p&gt;
&lt;p&gt;この話はご存知でしょう。Azure Functions は素早くスケールアウトします — それが目的です。しかし、「素早くスケールアウト」と「即座にリトライ」が合わさると、障害を劇的に悪化させる可能性があります。&lt;/p&gt;
&lt;p&gt;2つのパターンが役立ちます。指数バックオフとサーキットブレーカー。両方が、Service Bus でトリガーされる Azure Functions でネイティブサポートされるようになりました。&lt;/p&gt;
&lt;h2 id="2つのパターン異なる役割"&gt;2つのパターン、異なる役割&lt;/h2&gt;
&lt;p&gt;これらのパターンは補完的で、代替ではありません：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;指数バックオフ&lt;/strong&gt;は答えます：&lt;em&gt;いつリトライすればよいか？&lt;/em&gt;
依存関係が回復する時間を確保するためにリトライ間の遅延を増加させます。メッセージレベルで、リトライタイミングを調整します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;サーキットブレーカー&lt;/strong&gt;は答えます：&lt;em&gt;今この依存関係を呼び出すべきか？&lt;/em&gt;
障害のしきい値に達した後、不健全な依存関係への繰り返し呼び出しを停止し、クールダウン期間後に慎重に調査します。システムレベルで、リトライストームを防ぎます。&lt;/p&gt;
&lt;p&gt;両方が必要です。バックオフはメッセージごとのリトライペーシングを処理します。サーキットブレーカーは集合的な健全性の決定を処理します。&lt;/p&gt;
&lt;h2 id="service-bus-に特に重要な理由"&gt;Service Bus に特に重要な理由&lt;/h2&gt;
&lt;p&gt;キューはバーストトラフィックを吸収します、これは良いことです。しかし制御がなければ、ワーカーが失敗する呼び出しに計算リソースを無駄にし続ける間、キューが成長する可能性があります。ポイズンメッセージは、あるべき時間より長くアクティブのままです。ホットパーティションや下流の容量制限がカスケード問題を生み出します。&lt;/p&gt;
&lt;p&gt;より安全な設計：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一時的な障害を検出する&lt;/li&gt;
&lt;li&gt;指数バックオフで次の試行を遅らせる&lt;/li&gt;
&lt;li&gt;障害しきい値に達したら依存関係への呼び出しを停止する（サーキットオープン）&lt;/li&gt;
&lt;li&gt;クールダウン期間後に慎重に再開する（サーキット調査）&lt;/li&gt;
&lt;li&gt;回復不能な作業を dead-letter または隔離パスに移動する&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="ネイティブサポートの外観"&gt;ネイティブサポートの外観&lt;/h2&gt;
&lt;p&gt;新しいサポートは既存の Azure Functions ホストモデルと統合されます — 追加ライブラリなし、カスタム実装なし。設定は &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;サーキットブレーカーの設定は、不健全な依存関係が回復中に叩かれないよう、障害のしきい値とリセット間隔を設定します。&lt;/p&gt;
&lt;h2 id="対応言語"&gt;対応言語&lt;/h2&gt;
&lt;p&gt;これは .NET だけではありません。この機能は dotnet、JavaScript、TypeScript、Python をカバーします — Azure Functions の Service Bus トリガーでサポートされる言語の完全セットです。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;リトライパターンを設定するのは、下流の停止が発生して Functions が問題をより悪化させてしまう最初の事態が起きるまで、退屈に感じるものです。これを積極的に設定するのは安価です。インシデント中に改修するのはそうではありません。&lt;/p&gt;
&lt;p&gt;元の投稿：&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>