.NET 幫助

Azure.Messaging.ServiceBus 示例 C# (工作原理)

發佈 2024年8月13日
分享:

在當今互聯的數位環境中,效率高的溝通是成功企業的基石。無論是應用程式之間傳遞重要數據,還是在分佈式系統中確保即時更新,可靠的消息傳遞基礎設施都是不可或缺的。

Azure 服務匯流排, 一個基於雲的消息服務,作為一個強大的解決方案,使開發人員能夠構建可擴展、解耦和具有彈性的應用程式。讓我們深入了解 Azure Service Bus 的重要性並探索其眾多功能。稍後在本文中,我們還將探討 IronPDF 管理、生成和閱讀 PDF 檔案。

了解 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 提供佇列和主題作為通訊管道。佇列使點對點通信成為可能,確保每個消息都由唯一的接收方處理,非常適合工作負載分配和負載平衡場景。另一方面,主題支持發佈/訂閱消息模式,允許多個訂閱者獨立接收相關消息,有助於擴展事件驅動的架構。

  2. 可靠的消息傳遞: 使用 Azure Service Bus,消息傳遞本質上是可靠的。它確保消息持久性,可以配置消息和錯誤處理程序,容錯和至少一次傳遞語義,最大限度地減少數據丟失或重複的風險。此外,它支持事務,允許跨多個消息進行原子操作,從而確保數據完整性。

  3. 死信和重試策略: 為了有效處理錯誤消息,Azure Service Bus 提供死信功能,允許問題消息自動移至單獨的佇列以進行分析和故障排除。此外,它提供靈活的重試策略,使開發人員能夠配置具有指數回退策略的自動重試,增強應用程序在面臨短暫故障時的韌性。

  4. 分區和擴展: Azure Service Bus 支持消息實體的分區,以將工作負載分佈在多個節點之間,確保水平擴展和高吞吐量。這一功能對於處理大量消息和適應波動的工作負載至關重要,而不會影響性能或可靠性。

  5. 與 Azure 生態系統集成: Azure Service Bus 無縫整合其他 Azure 服務,例如Azure Functions、Logic Apps、Event Grid 和 Azure Kubernetes Service。 (AKS),使開發人員能夠輕鬆構建端到端的解決方案。無論是觸發無伺服器函數以響應進入的消息,還是使用邏輯應用程式協調複雜的工作流程,Azure Service Bus 是構建健壯的事件驅動架構的關鍵。

IronPDF 介紹

Azure.Messaging.ServiceBus 範例 C#(運作原理):圖1

IronPDF 是一個強大的C# PDF庫,可讓您在.NET專案中生成、編輯和提取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

在「建立命名空間」頁面上配置基本標籤,請按以下步驟操作:

  1. 訂用帳戶:選擇您想要建立命名空間的 Azure 訂用帳戶。

  2. 資源群組:選擇一個現有的資源群組以放置命名空間,或建立一個新的資源群組。

  3. 命名空間名稱:輸入命名空間的名稱。確保名稱符合以下條件:

    • 必須在 Azure 中具有唯一性。

    • 長度必須在 6 到 50 個字符之間。

    • 只能包含字母、數字和連字符「-」。

    • 必須以字母開始並以字母或數字結束。

    • 不能以「-sb」或「-mgmt」結尾。
  4. 位置:選擇您的命名空間應託管的區域。

  5. 定價層:選擇定價層 (基本、標準、 高級) 選擇命名空間。對於此範例,請選擇標準。

  6. 在頁面底部選擇檢視+建立

Azure.Messaging.ServiceBus 示例 C#(工作原理):圖 7

  1. 檢閱 + 建立 頁面上選擇建立。

  2. 當資源部署成功後,前往資源

您會看到服務匯流排命名空間的主頁。

在 Azure 入口網站中建立服務匯流排佇列

要在你的服務匯流排命名空間中設置佇列,請按照以下步驟操作:

  1. 導航到佇列:前往 Azure 入口網站中的服務匯流排命名空間頁面。從左側導航選單中選擇「佇列」。

  2. 建立新佇列:在佇列頁面上,點擊工具欄上的「+ 佇列」按鈕。

  3. 配置佇列:在提供的欄位中輸入你的佇列名稱。其餘設置保持默認值。在建立 Azure 服務匯流排佇列時需要配置的選項:

    1. 名稱:這是你佇列的唯一標識符。選擇一個描述性且易於記住的名稱。

    2. 最大佇列大小:這定義了佇列的最大存儲容量。可以設置為 1 GB、2 GB、5 GB、10 GB、20 GB、40 GB、80 GB 或 100 GB。針對本例,設置為 1 GB

    3. 最大投遞次數:這指定了一條消息在被送至死信佇列或被丟棄之前最多可被投遞的次數。這有助於處理消息處理失敗的情況。

    4. 消息存活時間: (TTL)**:這決定消息在過期前在隊列中保留的時間。您可以設定天數、時數、分數和秒數。一旦達到TTL,死信消息將被丟棄或移到死信隊列(如果啟用了死信處理)。
  4. 鎖定持續時間:這是消息被接收者鎖定以進行處理的時間。在這段時間內,其他接收者無法處理同一條消息。您可以設定這段時間的天數、時數、分數和秒數。

  5. 消息過期時啟用死信處理:啟用後,過期的消息 (即,超出了他們的TTL) 移至死信佇列而不是被丟棄。這允許對過期訊息進行進一步檢查和處理。

  6. 啟用分區:此選項可在多個訊息代理之間進行佇列的分區,從而提高可擴展性和吞吐量。分區對於處理大量訊息非常有用。

這些設置幫助您控制 Azure Service Bus 佇列的行為和性能,確保其符合應用程序的要求。

Azure.Messaging.ServiceBus 範例 C#(如何運作):圖8

  1. 完成創建:點擊「創建」按鈕以完成隊列的創建。這些步驟確保您在使用 Azure 入口網站創建服務總線命名空間內的隊列成功。

安裝 Azure.Messaging.ServiceBus,一個服務總線客戶端庫,以使用連接字串連接到 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)); // 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 變數保存您要處理的服務匯流排佇列的名稱。
  2. 演示設置

    • 代碼以打印訊息開始:“Demo IronPDF with Azure.Messaging.ServiceBus.”
    • 它使用 Installation.EnableWebSecurity = true; 啟用網頁安全性。
  3. 創建服務匯流排用戶端

    • 使用提供的連接字符串創建 ServiceBusClient。
    • 這個用戶端允許您與服務匯流排實體進行交互 (佇列、主題等。).
    1. 發送訊息

      • 使用 CreateSender 方法將內容為「IronPDF is Awesome Package」的訊息發送到指定的佇列。

      • 該訊息是使用新的 ServiceBusMessage 創建的。(msgText).
    • 已發送訊息的時間戳記將打印到控制台。
    1. 接收訊息

      • 使用 CreateReceiver 為相同的隊列創建接收器。
      • 程式碼等待用戶輸入 (使用 Console.Read()) 模擬訊息處理。
      • 當接收到訊息時,其ID和正文將打印到控制台。
  4. 生成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#

提供試用許可證 這裡.

結論

在以數位轉型和快速技術進步為特徵的時代,Azure Service Bus 成為全球企業現代化旅程中的關鍵組件。通過提供可靠、可擴展和靈活的消息傳遞功能,它使開發人員能夠設計出具彈性和敏捷性的解決方案,適應不斷變化的業務需求。

無論是促進無縫整合、啟用事件驅動架構,還是確保異步通信,Azure Service Bus 在推動創新和加速各行各業的數位計畫中都扮演著變革性的角色。

隨著組織繼續採用雲原生模式和分布式架構,Azure Service Bus 展現出微軟致力於在邁向雲端旅程中賦能開發人員和企業的承諾。 IronPDF 在 .NET 應用程式中簡化 PDF 生成,提供靈活性和功能性,直接從代碼創建專業級文檔。

< 上一頁
WebGrease .NET Core(開發人員如何使用)
下一個 >
簡單注入器C#(對開發者的運作原理)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >