.NET ヘルプ

Azure.Messaging.ServiceBusの例 C# (動作原理)

今日の相互接続されたデジタル環境では、効率的なコミュニケーションがビジネスを成功させる礎となります。 アプリケーション間で重要なデータを伝送する場合でも、分散システム間でリアルタイムの更新を確保する場合でも、信頼性の高いメッセージング・インフラストラクチャは不可欠です。

Azure Service Busは、開発者がスケーラブルで疎結合の耐障害性のあるアプリケーションを構築する力を与える強力なソリューションとして登場したクラウドベースのメッセージングサービスです。 Azure Service Busの領域を掘り下げて、その意義を理解し、無数の機能を探ってみよう。 この記事の後半では、PDFドキュメントの管理、生成、読み取りにIronPDFを使用する方法についても見ていきます。

Azure Service Busを理解する

Azure Service Busは、クラウド、オンプレミス、またはハイブリッド環境で実行されているかにかかわらず、アプリケーションとサービス間の信頼性の高い通信を促進する、完全に管理されたエンタープライズ統合メッセージブローカーです。

キューイングやパブリッシュ/サブスクライブメカニズムを含む柔軟なメッセージング機能を提供し、分散システムの異種コンポーネント間のシームレスな通信を可能にします。 さらに、バッチメッセージが可能なため、合計サイズの制約を超えることなく複数のメッセージを送信することができます。

Azure Service Busには次のようなメリットがある:

  1. アプリケーションの分離: Service Busは、アプリケーションとサービスをそれぞれ分離することを可能にします。 このデカップリングは信頼性と拡張性を高める。

  2. 負荷分散: 競合する作業者間で作業を均等に分配し、効率的なリソース利用を確保します。

  3. メッセージ転送: データはアプリケーションやサービス間でメッセージを使用して転送されます。 これらのメッセージのメッセージ・ボディには、JSON、XML、プレーン・テキストなど、さまざまなタイプのデータを含めることができる。

  4. メッセージングシナリオ: 一般的なシナリオには、ビジネスデータ(例:受注)の転送、負荷分散、トピックとサブスクリプションを使用したパブリッシャーとサブスクライバーの関係の有効化が含まれます。

  5. トランザクション: Service Busはアトミックトランザクションをサポートしており、単一のトランザクションスコープ内で複数の操作を可能にしています。 トランザクションには複数の同時呼び出しがあるが、メッセージ・バッチには1回の呼び出ししかない。

  6. メッセージセッション: ワークフローの高スケールな調整と順序付けされたメッセージ転送を促進します。

主な機能と機能

  1. キューとトピック: Azure Service Busは、キューとトピックの両方を通信チャンネルとして提供します。 キューはポイント・ツー・ポイントの通信を可能にし、各メッセージが1つのレシーバーによってのみ処理されることを保証するため、ワークロードの分散や負荷平準化シナリオに最適です。 一方、トピックはパブリッシュ/サブスクライブのメッセージング・パターンをサポートし、複数のサブスクライバーが関連するメッセージを個別に受け取ることを可能にし、スケーラブルなイベント駆動型アーキテクチャを促進する。

  2. 信頼性の高いメッセージ配信: Azure Service Busを使用すると、メッセージ配信は本質的に信頼性があります。 メッセージの永続性を保証し、メッセージとエラー・ハンドラ、フォールト・トレランス、at-least-onceデリバリー・セマンティクスを設定でき、データの損失や重複のリスクを最小限に抑える。 さらに、トランザクションをサポートし、複数のメッセージにまたがるアトミック操作を可能にすることで、データの整合性を確保している。

  3. デッドレタリングとリトライポリシー: 誤ったメッセージを効果的に処理するために、Azure Service Busはデッドレタリング機能を提供しています。これにより、問題のあるメッセージを自動的に別のキューに移動させ、分析とトラブルシューティングを行うことができます。 さらに、柔軟な再試行ポリシーを提供するため、開発者は指数関数的なバックオフ戦略で自動再試行を設定することができ、一過性の障害に直面したアプリケーションの回復力を高めることができる。

  4. パーティショニングとスケーリング: Azure Service Busは、メッセージングエンティティのパーティショニングをサポートしており、ワークロードを複数のノードに分散させ、水平スケーラビリティと高スループットを確保します。 この機能は、パフォーマンスや信頼性を損なうことなく、大量のメッセージを処理し、変動するワークロードに対応するために極めて重要である。

  5. Azure エコシステムとの統合: Azure Service Bus は、Azure Functions、Logic Apps、Event Grid、Azure Kubernetes Service (AKS) などの他の Azure サービスとシームレスに統合されており、開発者がエンド ツー エンドのソリューションを容易に構築できるようにします。 受信メッセージに応答してサーバーレス関数をトリガーする場合でも、Logic Appsを使用して複雑なワークフローをオーケストレーションする場合でも、Azure Service Busは堅牢なイベント駆動型アーキテクチャを構築するための要として機能します。

IronPDFの紹介

Azure.Messaging.ServiceBus 例 C#(動作の仕組み):図 1

IronPDFは、.NETプロジェクトでPDFドキュメントを生成、編集、コンテンツを抽出できる強力なC# PDFライブラリです。 以下は主な機能です:

  1. HTMLからPDFへの変換:

    • HTML、CSS、JavaScriptコンテンツをPDF形式に変換します。

    • Chromeレンダリングエンジンを使用して、ピクセルパーフェクトなPDFを作成できます。

    • URL、HTMLファイル、HTML文字列からPDFを生成します。
  2. 画像とコンテンツの変換

    • 画像をPDFへ、またはPDFから変換します。

    • 既存のPDFからテキストと画像を抽出します。

    • 様々な画像フォーマットをサポート。
  3. 編集と操作

    • PDFのプロパティ、セキュリティ、権限を設定します。

    • デジタル署名を追加する。

    • メタデータとリビジョン履歴を編集する。
  4. クロスプラットフォームサポート:

    • .NET Core (8, 7, 6, 5, および 3.1+)、.NET Standard (2.0+)、および .NET Framework (4.6.2+) に対応しています。

    • Windows、Linux、macOSに対応。

    • NuGetで簡単にインストールできる。

IronPDFとAzure.Messaging.ServiceBusを使用したPDFドキュメントの生成

まず始めに、Visual Studioを使って以下のようにコンソール・アプリケーションを作成してください。

Azure.Messaging.ServiceBus の例 C# (動作方法): 図 2

プロジェクト名

Azure.Messaging.ServiceBus の例 C# (動作の仕組み): 図3

.NET バージョンの提供

Azure.Messaging.ServiceBus の C# サンプル (動作の仕組み): 図 4

IronPDFパッケージをインストールします。

Azure.Messaging.ServiceBus の例 C# (動作方法): 図 5

Azure Service Busの作成

Azure全体で一意の名前を持つ名前空間を作成する。 名前空間は、アプリケーション内のキューやトピックなどのService Busリソースのコンテナです。

ネームスペースの作り方は以下の通り:

  1. Azureポータルにログインする。

  2. すべてのサービス」ページにアクセスする。

  3. 左のナビゲーションペインで、カテゴリーリストから「統合」を選択します。

  4. Service Bus "にカーソルを合わせ、Service Busタイルの "+"ボタンをクリックする。

    Azure.Messaging.ServiceBus の C# の例 (動作概要): 図 6

    ネームスペースの作成]ページの[基本]タブを構成するには、以下の手順に従います:

  5. サブスクリプション: ネームスペースを作成するために使用するAzureサブスクリプションを選択します。

  6. リソースグループ: 名前空間を配置する既存のリソースグループを選択するか、新しいものを作成します。

  7. 名前空間名: 名前空間の名前を入力してください。 名前が以下の条件を満たしていることを確認してください:

    • Azure全体で一意でなければならない。

    • 長さは6文字以上50文字以内。

    • アルファベット、数字、ハイフン"-"のみ。

    • 文字で始まり、文字または数字で終わること。

    • sb "または"-mgmt "で終わることはできない。
  8. 場所: 名前空間をホストする地域を選択します。

  9. 価格帯: ネームスペースの価格帯(Basic、Standard、またはPremium)を選択します。 この例では、Standardを選択する。

  10. ページの下部で確認 + 作成を選択します。

    Azure.Messaging.ServiceBus の例 C#(動作方法):図7

  11. レビュー + 作成 ページで「作成」を選択します。

  12. リソースのデプロイメントが成功したら、リソースに移動します。

    Service Busネームスペースのホームページが表示されます。

AzureポータルでService Busキューを作成する

Service Bus ネームスペースにキューを設定するには、以下の手順に従います:

  1. キューに移動する: Azureポータルでサービスバス名前空間ページに移動します。 左のナビゲーションメニューから「キュー」を選択します。

  2. 新しいキューを作成: キューページで、ツールバーの「+ キュー」ボタンをクリックします。

  3. キューを構成: 指定されたフィールドにキューの名前を入力します。 その他の設定はデフォルト値のままにしておく。 Azure Service Busキューを作成する際に設定する必要があるオプション:

    1. 名前: これはキューのユニーク識別子です。 説明的で覚えやすい名前を選ぶ。

    2. 最大キューサイズ:これはキューの最大ストレージ容量を定義します。 1GB、2GB、5GB、10GB、20GB、40GB、80GB、100GBに設定できます。 お客様の場合、1 GBに設定されています。

    3. 最大配信回数: これは、メッセージがデッドレターキューに送信されるか破棄される前に配信できる最大の回数を指定します。 これは、メッセージ処理の失敗を処理するのに役立つ。

    4. メッセージの生存時間 (TTL): これは、メッセージが有効期限切れになるまでキュー内にとどまる時間を決定します。 日、時間、分、秒で設定できる。 TTLに達すると、デッドレターメッセージは破棄されるか、デッドレターが有効になっていればデッドレターキューに移される。

    5. ロック期間: これは、レシーバーによってメッセージが処理されるためにロックされる時間の長さです。 この間、他のレシーバーは同じメッセージを処理できない。 この期間は日、時間、分、秒で設定できる。

    6. メッセージの有効期限切れでデッドレタリングを有効にする:有効にすると、TTLを超えたメッセージは破棄されずにデッドレターキューに移動されます。 これにより、期限切れメッセージのさらなる検査と処理が可能になる。

    7. パーティションの有効化: このオプションは、キューを複数のメッセージブローカーにわたってパーティション化することを可能にし、スケーラビリティとスループットを向上させることができます。 パーティショニングは大量のメッセージを処理するのに便利だ。

    これらの設定は、Azure Service Busキューの動作とパフォーマンスを制御し、アプリケーションの要件を満たすようにします。

    Azure.Messaging.ServiceBus の C# 使用例(動作の仕組み):図 8

  4. 作成を完了: 「作成」ボタンをクリックして、キューの作成を完了します。 これらの手順により、Azureポータルを使用してService Busネームスペース内にキューを正常に作成できるようになります。

    接続文字列を使用してAzureキューに接続するために、Service BusクライアントライブラリであるAzure.Messaging.ServiceBusをインストールします。

    Azure.Messaging.ServiceBus 例 C#(動作の仕組み):図 9

    以下のコードを追加して、Azure.Messaging.ServiceBus を使用してメッセージを送信し、メッセージを受信してください。

using Azure.Messaging.ServiceBus;
namespace CodeSample
{
    public static class AzureServiceBusDemo
    {
        public static async Task Execute()
        {
            string connectionString = "Endpoint=sb://iron-articles.servicebus.windows.net/;SharedAccessKeyName=all;SharedAccessKey=uqQIzpuc2HxbnAb9keqTINvzfTcFbkkU0+ASbJZ/tow=;EntityPath=ironpdf";
            string queName = "ironpdf";
            Console.WriteLine("Demo IronPDF with Azure.Messaging.ServiceBus");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Messaging.ServiceBus</h1>";
            content += "<h2>Send Message to Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            await using var client = new ServiceBusClient(connectionString);
            var msgText = "IronPDF is Awesome Package";
            content += $"<p>Message:{msgText}</p>";
            var tx = client.CreateSender(queName);
            await tx.SendMessageAsync(new ServiceBusMessage(msgText)); // message await sender
            Console.WriteLine($"Sent Below message at:{DateTime.Now}");
            content += $"<p>Sent Below message at:{DateTime.Now}</p>";
            Console.Read(); // wait for user input to read the message;
            var rx = client.CreateReceiver(queName);
            var msg = await rx.ReceiveMessageAsync(); // receive messages
            content += "<h2>Receive Message from Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            content += $"<p>Recieved Below message at:{DateTime.Now}</p>";
            Console.WriteLine($"Recieved Below message at:{DateTime.Now}");
            content += $"<p>MessageID={msg}</p>";
            Console.WriteLine($"MessageID={msg}");
            content += $"<p>Message Received: {msg.Body}</p>";
            Console.WriteLine($"Message Received: {msg.Body}");
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureServiceBusQueueAndIronPdf.pdf");
        }
    }
}
using Azure.Messaging.ServiceBus;
namespace CodeSample
{
    public static class AzureServiceBusDemo
    {
        public static async Task Execute()
        {
            string connectionString = "Endpoint=sb://iron-articles.servicebus.windows.net/;SharedAccessKeyName=all;SharedAccessKey=uqQIzpuc2HxbnAb9keqTINvzfTcFbkkU0+ASbJZ/tow=;EntityPath=ironpdf";
            string queName = "ironpdf";
            Console.WriteLine("Demo IronPDF with Azure.Messaging.ServiceBus");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Messaging.ServiceBus</h1>";
            content += "<h2>Send Message to Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            await using var client = new ServiceBusClient(connectionString);
            var msgText = "IronPDF is Awesome Package";
            content += $"<p>Message:{msgText}</p>";
            var tx = client.CreateSender(queName);
            await tx.SendMessageAsync(new ServiceBusMessage(msgText)); // message await sender
            Console.WriteLine($"Sent Below message at:{DateTime.Now}");
            content += $"<p>Sent Below message at:{DateTime.Now}</p>";
            Console.Read(); // wait for user input to read the message;
            var rx = client.CreateReceiver(queName);
            var msg = await rx.ReceiveMessageAsync(); // receive messages
            content += "<h2>Receive Message from Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            content += $"<p>Recieved Below message at:{DateTime.Now}</p>";
            Console.WriteLine($"Recieved Below message at:{DateTime.Now}");
            content += $"<p>MessageID={msg}</p>";
            Console.WriteLine($"MessageID={msg}");
            content += $"<p>Message Received: {msg.Body}</p>";
            Console.WriteLine($"Message Received: {msg.Body}");
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureServiceBusQueueAndIronPdf.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

コードの説明

  1. 接続文字列とキュー名

    • connectionString 変数には、Azure Service Bus 名前空間の接続詳細が含まれています。 エンドポイント、共有アクセスキー、エンティティパス(キュー名)を指定します。

    • queName 変数は、操作したい Service Bus キューの名前を保持します。
  2. デモセットアップ

    • コードはメッセージを表示することから始まります:"Azure.Messaging.ServiceBusを使用したIronPDFのデモ"

    • それは、Installation.EnableWebSecurity = true;を使用してウェブセキュリティを有効にします。
  3. サービス バス クライアントを作成する

    • ServiceBusClient は、指定された接続文字列を使用して作成されます。

    • このクライアントを使用すると、Service Bus エンティティ(キュー、トピックなど)と対話することができます。
  4. メッセージを送信する:

    • メッセージ「IronPDF is Awesome Package」の内容が、CreateSender メソッドを使用して指定されたキューに送信されます。

    • メッセージは、new ServiceBusMessage(msgText) を使用して作成されます。

    • 送信されたメッセージのタイムスタンプがコンソールに表示される。
  5. メッセージを受信

    • CreateReceiverを使用して同じキューのレシーバーが作成されます。

    • コードは、メッセージ処理をシミュレートするためにユーザー入力を待ちます(Console.Read()を使用)。

    • メッセージを受信すると、そのIDと本文がコンソールに表示される。
  6. PDFの生成:

    • レンダラーは、HTMLコンテンツ(送受信されたメッセージを含む)からPDFを作成します。

    • 出来上がったPDFは "AwesomeAzureServiceBusQueueAndIronPdf.pdf" として保存されます。

出力

Azure.Messaging.ServiceBus 例 C# (動作の仕組み): 図10

PDF

Azure.Messaging.ServiceBus の例 C#(仕組み):図 11

IronPDF ライセンシング

IronPDFパッケージの実行とPDF生成にはライセンスが必要です。 パッケージにアクセスする前に、アプリケーションの最初に以下のコードを追加してください。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

試用ライセンスはIronPDF試用ライセンスページで入手可能です。

結論

デジタルトランスフォーメーションと急速な技術進歩を特徴とする時代において、Azure Service Busは世界中の企業のモダナイゼーションの旅において極めて重要なコンポーネントとして浮上している。信頼性、拡張性、柔軟性に優れたメッセージング機能を提供することで、開発者は、進化するビジネス要件に適応できる弾力的で俊敏なソリューションを構築できるようになります。

シームレスな統合の促進、イベント駆動型アーキテクチャの実現、非同期通信の確保など、Azure Service Busは、イノベーションを推進し、業界全体のデジタルイニシアチブを加速する上で、変革的な役割を果たしています。

組織がクラウドネイティブなパラダイムと分散アーキテクチャを採用し続ける中、Azure Service Busは、クラウドへの旅において開発者と企業を支援するというマイクロソフトのコミットメントを証明するものとなっている。 IronPDFは、.NETアプリケーション内でのPDF生成を簡素化し、コードから直接プロフェッショナルレベルの文書を作成するための柔軟性と機能性を提供します。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
WebGrease .NET Core (開発者のための仕組み)
次へ >
シンプルインジェクター C#(開発者のための仕組み)