跳過到頁腳內容
.NET幫助

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

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

Azure Service Bus,作為一種基於雲端的消息服務,為開發人員提供了一種強大的解決方案,能夠構建可擴展、解耦和具有彈性的應用程式。 讓我們深入探討 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))無縫集成,為開發人員提供了簡便的端到端解決方案。 無論是響應輸入消息觸發無服務器功能,還是使用 Logic Apps 編排複雜的工作流程,Azure Service Bus 作為構建可靠的事件驅動架構的核心軸心。

IronPDF 简介

Azure.Messaging.ServiceBus Example C#(工作原理):圖 1

IronPDF 是一個強大的 C# PDF 庫,允許您在 .NET 專案中生成、編輯和提取 PDF 文件的內容。 以下是一些關鍵功能:

  1. HTML 到 PDF 轉換

    • 將 HTML 、CSS 和 JavaScript 內容轉換為 PDF 格式。

    • 使用 Chrome 渲染引擎生成像素完美的 PDF。

    • 從 URL 、HTML 文件或 HTML 字串生成 PDF。
  2. 圖像和內容轉換

    • 將圖像轉換為 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 Example C#(工作原理):圖 2

提供專案名稱

Azure.Messaging.ServiceBus Example C#(工作原理):圖 3

提供 .NET 版本

Azure.Messaging.ServiceBus Example C#(工作原理):圖 4

安裝 IronPDF 包

Azure.Messaging.ServiceBus Example C#(工作原理):圖 5

創建 Azure Service Bus

創建具有 Azure 中唯一名稱的命名空間。 命名空間是應用程式中隊列和主題等 Service Bus 資源的容器。

以下是創建命名空間的方法:

  1. 登錄到 Azure 入口網站。
  2. 前往"所有服務"頁面。
  3. 在左側導航窗格中,從類別列表中選擇"集成"。
  4. 將鼠標懸停在“Service Bus”上,並在 Service Bus 磚上點擊“+”按鈕。

Azure.Messaging.ServiceBus Example C#(工作原理):圖 6

要配置創建命名空間頁面的"基本"選項卡,請按照以下步驟操作:

  1. 訂閱:選擇要創建命名空間的 Azure 訂閱。
  2. 資源組:選擇命名空間將位於的現有資源組,或者創建一個新資源組。

  3. 命名空間名稱:輸入命名空間的名稱。 確保名稱滿足以下標準:

    • 在 Azure 中必須是唯一的。

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

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

    • 必須以字母開頭,以字母或數字結尾。

    • 不能以 "-sb" 或 "-mgmt" 結尾。
  4. 位置:選擇您的命名空間應該託管的區域。
  5. 定價層:選擇命名空間的定價層(基礎版、標準版或高級版)。 對於此示例,選擇標準版。

  6. 在頁面底部選擇 審查 + 創建

Azure.Messaging.ServiceBus Example 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. 啟用消息過期死信:啟用時,過期的消息(即超過其 TTL)被移動到死信隊列而不是丟棄。 這可以對過期的消息進行進一步檢查和處理。

    7. 啟用分區:此選項啟用隊列在多個消息代理之間的分區,這有助於提高可擴展性和吞吐量。 分區對於處理大量消息非常有用。

這些設置幫助您控制 Azure Service Bus 隊列的行為和性能,確保其滿足您的應用程式要求。

Azure.Messaging.ServiceBus Example C#(工作原理):圖 8

  1. 完成創建:點擊"創建"按鈕以最終完成隊列的創建。 這些步驟確保您成功地使用 Azure 門戶在您的 Service Bus 命名空間內創建了一個隊列。

安裝 Azure.Messaging.ServiceBus ,一個 Service Bus 客戶端庫,以使用連接字符串連接到 Azure 隊列。

Azure.Messaging.ServiceBus Example 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. 演示設置

    • 代碼開始時會打印一條信息:“演示 IronPDF 與 Azure.Messaging.ServiceBus。”

    • 使用 Installation.EnableWebSecurity = true; 啟用 Web 安全性。
  3. 創建 Service Bus 客戶端

    • 使用提供的連接字串創建 ServiceBusClient

    • 這個客戶端允許您與 Service Bus 實體(隊列、主題等)互動。
  4. 發送消息

    • 使用 CreateSender 方法將內容為“ IronPDF is Awesome Package ”的消息發送到指定的隊列。

    • 該消息使用 new ServiceBusMessage(msgText) 創建。

    • 發送消息的時間戳打印在控制台上。
  5. 接收消息

    • 為相同的隊列創建一個接收器,使用 CreateReceiver

    • 該代碼等待用戶輸入(使用 Console.ReadLine())來模擬消息處理。

    • 當收到一條消息時,它的 ID 和消息體會被打印到控制台上。
  6. 生成 PDF

    • 渲染器從 HTML 內容中(包括發送和接收的消息)生成 PDF 文件。

    • 結果的 PDF 被保存為 “AwesomeAzureServiceBusQueueAndIronPdf.pdf”。

輸出

Azure.Messaging.ServiceBus Example C#(工作原理):圖 10

PDF

Azure.Messaging.ServiceBus Example 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 框架和操作系統的跨平台兼容性。

您如何使用 Azure.Messaging.ServiceBus 在 C# 中發送消息?

要使用 Azure.Messaging.ServiceBus 發送消息,您需要創建一個 ServiceBusSender,並使用 SendMessageAsync 方法將消息發送到佇列。

Azure Service Bus 中的死信如何運作?

Azure Service Bus 中的死信自動將無法處理的消息移動到單獨的死信佇列中,允許開發人員有效地分析和排除這些問題消息的故障。

Azure Service Bus 能否支援事件驅動架構?

是的,Azure Service Bus 與其他 Azure 服務如 Azure Functions 和 Logic Apps 緊密集成,支持事件驅動架構,並促進可擴展和靈活的消息解決方案。

使用 Azure.Messaging.ServiceBus 接收消息的過程是什麼?

要使用 Azure.Messaging.ServiceBus 接收消息,您需要創建一個 ServiceBusReceiver,並使用 ReceiveMessageAsync 方法來處理來自佇列的傳入消息。

使用文章中提到的 PDF 庫需要許可證嗎?

是的,IronPDF 需要許可證來生成 PDF。您可以為您的應用程序獲取許可證密鑰,或使用 IronPDF 許可證試用頁面提供的試用許可證。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。