フッターコンテンツにスキップ
.NETヘルプ

Azure.Messaging.ServiceBus Example 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はアトミックトランザクションをサポートしており、単一のトランザクションスコープ内で複数の操作を実行できます。 トランザクションには複数の同時呼び出しが含まれますが、メッセージバッチには単一の呼び出しがあります。
  6. メッセージセッション:高スケールのワークフロー調整や順序付きメッセージ転送を促進します。

主要な機能と能力

  1. キューとトピック: Azure Service Busは通信チャンネルとしてキューとトピックの両方を提供します。 キューはポイントツーポイント通信を可能にし、各メッセージが1つの受信者によってのみ処理されることを保証し、ワークロードの分配や負荷レベリングシナリオに理想的です。 一方、トピックは発行/購読メッセージングパターンをサポートし、複数の購読者が関連するメッセージを独立して受信できることを可能にし、スケーラブルなイベント駆動型アーキテクチャを促進します。

  2. 信頼性のあるメッセージ配信: Azure Service Busを使用すると、メッセージ配信は本質的に信頼性があります。 メッセージの永続性を保証し、メッセージとエラーハンドラー、フォールトトレランス、少なくとも1回の配信セマンティクスを構成でき、データの損失や重複のリスクを最小限に抑えます。 さらに、トランザクションをサポートし、複数のメッセージにわたるアトミック操作を可能にし、データの整合性を保証します。

  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#ライブラリです。 以下にいくつかの主要な機能を紹介します:

  1. HTMLからPDFへの変換:

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

    • Chrome Rendering Engineを使用してピクセルパーフェクトな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

名前空間作成ページの基本タブを構成するには、次の手順に従います:

  1. サブスクリプション: 名前空間を作成したいAzureサブスクリプションを選択してください。
  2. リソースグループ: 名前空間を配置する既存のリソースグループを選択するか、新しいものを作成します。

  3. 名前空間名: 名前空間の名前を入力します。 名前が次の基準を満たしていることを確認してください:

    • Azure全体で一意である必要があります。

    • 長さは6〜50文字である必要があります。

    • 英字、数字、およびハイフン「-」のみ含むことができます。

    • 文字で始まり、文字または数字で終わる必要があります。

    • 「-sb」または「-mgmt」で終わることはできません。
  4. ロケーション: 名前空間をホストする地域を選択します。
  5. 料金プラン: 名前空間の料金プラン(基本、標準、またはプレミアム)を選択します。 この例では、標準を選択してください。

  6. ページの下部でレビューと作成を選択します。

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

  1. レビューと作成ページで作成を選択します。

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

Service Bus名前空間のホームページが表示されます。

AzureポータルでのService Busキューの作成

Service Bus名前空間にキューを設定するには、次の手順に従います:

  1. キューにナビゲート: AzureポータルでService Bus名前空間ページに移動します。 左側のナビゲーションメニューから「キュー」を選択します。
  2. 新しいキューの作成: キューのページで、ツールバーの「+キュー」ボタンをクリックします。
  3. キューの構成: 指定されたフィールドにキューの名前を入力します。 他の設定はデフォルト値のままにしておきます。 Azure Service Busキューを作成する際に構成する必要があるオプション:

    1. 名前: これはキューの一意の識別子です。 説明的で覚えやすい名前を選択してください。

    2. 最大キューサイズ: キューの最大ストレージ容量を定義します。 1 GB、2 GB、5 GB、10 GB、20 GB、40 GB、80 GB、または100 GBに設定することができます。 今回は1 GBに設定します。

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

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

    5. ロック期間: 受信者によって処理されるためにメッセージがロックされる期間です。 この期間中、他の受信者は同じメッセージを処理できません。 この期間を日、時間、分、秒で設��します。

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

    7. パーティショニングを有効にする: 複数のメッセージブローカーにキューを分割してスケーラビリティとスループットを向上させることができます。 大容量のメッセージを処理するためにパーティショニングが役立ちます。

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

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

  1. 作成の完了: 「作成」ボタンをクリックしてキューの作成を完了します。 これらのステップを実施することで、Azureポータルを使用してService Bus名前空間内にキューを正常に作成できます。

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

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)); // Send message to the queue
            Console.WriteLine($"Sent Below message at: {DateTime.Now}");
            content += $"<p>Sent Below message at: {DateTime.Now}</p>";

            Console.ReadLine(); // 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.MessageId}</p>";
            Console.WriteLine($"MessageID={msg.MessageId}");

            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)); // Send message to the queue
            Console.WriteLine($"Sent Below message at: {DateTime.Now}");
            content += $"<p>Sent Below message at: {DateTime.Now}</p>";

            Console.ReadLine(); // 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.MessageId}</p>";
            Console.WriteLine($"MessageID={msg.MessageId}");

            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");
        }
    }
}
Imports Azure.Messaging.ServiceBus
Namespace CodeSample
	Public Module AzureServiceBusDemo
		Public Async Function Execute() As Task
			Dim connectionString As String = "Endpoint=sb://iron-articles.servicebus.windows.net/;SharedAccessKeyName=all;SharedAccessKey=uqQIzpuc2HxbnAb9keqTINvzfTcFbkkU0+ASbJZ/tow=;EntityPath=ironpdf"
			Dim queName As String = "ironpdf"
			Console.WriteLine("Demo IronPDF with Azure.Messaging.ServiceBus")
			Installation.EnableWebSecurity = True

			' Instantiate Renderer
			Dim renderer = New ChromePdfRenderer()
			Dim content = "<h1>Demo IronPDF with Azure.Messaging.ServiceBus</h1>"
			content &= "<h2>Send Message to Azure.Messaging.ServiceBus Queue: ironpdf</h2>"

			Await var client = New ServiceBusClient(connectionString)
			Dim msgText = "IronPDF is Awesome Package"
			content &= $"<p>Message: {msgText}</p>"

			Dim tx = client.CreateSender(queName)
			Await tx.SendMessageAsync(New ServiceBusMessage(msgText)) ' Send message to the queue
			Console.WriteLine($"Sent Below message at: {DateTime.Now}")
			content &= $"<p>Sent Below message at: {DateTime.Now}</p>"

			Console.ReadLine() ' wait for user input to read the message;

			Dim rx = client.CreateReceiver(queName)
			Dim 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.MessageId}</p>"
			Console.WriteLine($"MessageID={msg.MessageId}")

			content &= $"<p>Message Received: {msg.Body}</p>"
			Console.WriteLine($"Message Received: {msg.Body}")

			Dim pdf = renderer.RenderHtmlAsPdf(content)
			' Export to a file or Stream
			pdf.SaveAs("AwesomeAzureServiceBusQueueAndIronPdf.pdf")
		End Function
	End Module
End Namespace
$vbLabelText   $csharpLabel

コードの説明

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

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

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

    • コードはメッセージ「Azure.Messaging.ServiceBusを使用してIronPDFをデモしています」を出力することから始まります。

    • Installation.EnableWebSecurity = true;を使用してWebセキュリティを有効にします。
  3. Service Busクライアントの作成:

    • 提供された接続文字列を使用してServiceBusClientを作成します。

    • このクライアントを使用して、Service Busエンティティ(キュー、トピックなど)とのやりとりを行います。
  4. メッセージの送信:

    • 指定されたキューに「IronPDFは素晴らしいパッケージです」という内容のメッセージをCreateSenderメソッドを使用して送信します。

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

    • 送信されたメッセージのタイムスタンプがコンソールに出力されます。
  5. メッセージの受信:

    • CreateReceiverを使用して同じキューの受信者を作成します。

    • コードはユーザー入力 (Console.ReadLine()を使ったメッセージ処理のシミュレーション)まで待機します。

    • メッセージが受信されると、その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生成をシンプルにし、コードから直接プロフェッショナルグレードのドキュメントを作成するための柔軟性と機能性を提供します。

よくある質問

C# で HTML を PDF に変換するにはどうすればいいですか?

IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。さらに、RenderHtmlFileAsPdf メソッドを使用して HTML ファイルを PDF に変換することもできます。

Azure Service Bus とは何ですか、そしてそれはどのように通信を強化しますか?

Azure Service Bus は、クラウドベースかオンプレミスか、ハイブリッド環境であれアプリケーションおよびサービス間の信頼性のあるメッセージ転送を可能にすることで通信を強化する、完全管理されたエンタープライズ統合メッセージブローカーです。

記事で使用されている PDF ライブラリの主な機能は何ですか?

IronPDF ライブラリは、HTML から PDF の変換、PDF の編集と操作、画像変換、およびさまざまな .NET フレームワークおよびオペレーティングシステムとのクロスプラットフォーム互換性などの機能を提供します。

C# で Azure.Messaging.ServiceBus を使用してメッセージを送信するにはどうすればよいですか?

Azure.Messaging.ServiceBus を使用してメッセージを送信するには、ServiceBusSender を作成し、SendMessageAsync メソッドを使用してキューにメッセージを送信します。

Azure Service Bus におけるデッドレターリングの仕組みはどうなっていますか?

Azure Service Bus におけるデッドレタリングは、処理できないメッセージを自動的に別のデッドレターキューに移動し、開発者がこれらの問題メッセージを効果的に分析およびトラブルシューティングできるようにします。

Azure Service Bus はイベント駆動型アーキテクチャをサポートしていますか?

はい、Azure Service Bus は Azure Functions や Logic Apps などの他の Azure サービスとシームレスに統合されており、イベント駆動型アーキテクチャをサポートし、スケーラブルで柔軟なメッセージングソリューションを提供します。

Azure.Messaging.ServiceBus を使用してメッセージを受信するプロセスは何ですか?

Azure.Messaging.ServiceBus を使用してメッセージを受信するには、ServiceBusReceiver を作成し、ReceiveMessageAsync メソッドを使用してキューからの受信メッセージを処理します。

記事に記載されている PDF ライブラリの使用にはライセンスが必要ですか?

はい、IronPDF で PDF を生成するにはライセンスが必要です。アプリケーションの使用にライセンスキーを取得するか、IronPDF Trial License Page から利用できる試用ライセンスを使用することができます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。