.NET ヘルプ

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

公開済み 2024年8月13日
共有:

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

Azure Service Busクラウドベースのメッセージング・サービスであるSaaSは、開発者がスケーラブルでデカップリングされた弾力性のあるアプリケーションを構築できるようにする堅牢なソリューションとして登場した。 Azure Service Busの領域を掘り下げて、その意義を理解し、無数の機能を探ってみよう。 この記事の後半で、我々はまた、次のことを見ていきます。IronPDFPDF文書の管理、生成、読み取りを行います。

Azure Service Busを理解する

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

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

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

  1. **アプリケーションの切り離しService Busでは、アプリケーションとサービスを分離することができます。 このデカップリングは信頼性と拡張性を高める。

  2. ロードバランシング:競合するワーカー間で仕事のバランスをとり、リソースの効率的な利用を保証します。

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

  4. メッセージングのシナリオ:一般的なシナリオには、ビジネスデータの転送が含まれる(例:セールスオーダー)また、トピックとサブスクリプションを使用して、パブリッシャーとサブスクライバーの関係を可能にし、ロードバランシングを行う。

  5. トランザクション:Service Busはアトミックトランザクションをサポートしており、1つのトランザクションスコープ内で複数の操作が可能です。 トランザクションには複数の同時呼び出しがあるが、メッセージ・バッチには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などの他のAzureサービスとシームレスに統合されています。(AKS)開発者はエンド・ツー・エンドのソリューションを簡単に構築できる。 受信メッセージに応答してサーバーレス関数をトリガーする場合でも、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 標準(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. 価格ティア:価格帯を選択してください。(ベーシック、スタンダード、プレミアム)を名前空間に使用する。 この例では、Standardを選択する。

  10. ページ下部のレビュー+作成を選択します。

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

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

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

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

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

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

  1. キューに移動します:AzureポータルのService Bus Namespaceページに移動します。 左のナビゲーションメニューから「キュー」を選択します。

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

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

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

    2. Max Queue Size:これは、キューの最大記憶容量を定義します。 1GB、2GB、5GB、10GB、20GB、40GB、80GB、100GBに設定できます。 あなたの場合、1GBに設定されています。

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

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

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

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

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

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

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

  4. Complete Creation:Create "ボタンをクリックすると、キューの作成が完了します。 これらの手順により、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
VB   C#

コードの説明

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

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

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

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

    • Installation.EnableWebSecurity=true;`を使用してWebセキュリティを有効にします。
  3. サービスバスクライアントの作成

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

    • このクライアントは、サービス・バス・エンティティとの対話を可能にします。(キュー、トピックなど).
  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
VB   C#

試用ライセンスは、以下のサイトで入手できますIronPDFトライアルライセンスページ.

結論

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

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

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

< 以前
WebGrease .NET Core (開発者のための仕組み)
次へ >
シンプルインジェクター C#(開発者のための仕組み)