跳過到頁腳內容
.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 範例 C#(如何運作):圖 1

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

  1. HTML 轉 PDF:
  • 將 HTML,CSS 和 JavaScript 內容轉換為 PDF 格式。

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

  • 從網址,HTML 文件或 HTML 字符串生成 PDF。
  1. 影像和內容轉換:
  • 將影像轉換為 PDF 或從 PDF 中轉換。

  • 從現有 PDF 中提取文本和圖像。

  • 支持各種圖像格式。
  1. 編輯和操作:
  • 設置 PDF 的屬性、安全性和權限。

  • 添加數位簽名。

  • 編輯元數據及修訂歷史。
  1. 跨平台支援:
  • 支援 .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# (How It Works): Figure 2

提供專案名稱

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 3

提供 .NET 版本

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 4

安裝 IronPDF 套件

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 5

創建 Azure Service Bus

創建一個 Azure 中唯一命名的命名空間。 命名空間是 Service Bus 資源的容器,例如您的應用程式中的隊列和主題。

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

  1. 登錄 Azure 入口網站。
  2. 進入"All Services"頁面。
  3. 在左側導航窗格中,從類別列表中選擇"Integration"。
  4. 懸停在"Service Bus"上,然後點擊 Service Bus 區塊上的"+"按鈕。

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 6

要在"創建命名空間"頁面上的"基本信息"標籤中進行配置,請按照以下步驟操作:

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

  3. 命名空間名稱:輸入命名空間的名稱。 確保名稱符合以下條件:
  • 必須在 Azure 中唯一。

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

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

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

  • 不得以"-sb"或"-mgmt"結尾。
  1. 地區:選擇您希望托管命名空間的區域。
  2. 定價層:選擇命名空間的定價層(Basic,Standard 或者 Premium)。 在本例中,選擇 Standard。

  3. 選擇頁面底部的審核 + 創建

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 7

  1. 審核 + 創建頁上選擇創建。

  2. 當資源的部署成功時,轉到資源

您將看到您的 Service Bus 命名空間的主頁面。

在 Azure 入口網站中創建 Service Bus 隊列

要在您的 Service Bus 命名空間中設置隊列,請按照以下步驟操作:

  1. 導航到隊列:進入 Azure 入口網站上的 Service Bus 命名空間頁。 從左側導航菜單中選擇"Queues"。
  2. 創建新隊列:在 Queues 頁面上,點擊工具欄上的"+ Queue"按鈕。
  3. 配置隊列:在指定的字段中輸入您的隊列名稱。 將其他設置保持其預設值。 創建 Azure Service Bus 隊列時需要配置的選項:

  4. 名稱:這是您隊列的唯一識別符。 選擇一個描述性且易記的名稱。

  5. 最大隊列大小:這定義了隊列的最大存儲容量。 您可以將其設置為 1 GB,2 GB,5 GB,10 GB,20 GB,40 GB,80 GB 或 100 GB。 在您的情況下,設置為 1 GB

  6. 最大投遞次數:這指定了消息在被發送到死信隊列或丟棄之前的最大投遞次數。 這有助於處理消息處理失敗。

  7. 消息生命週期(TTL):這決定了消息在隊列中存在的時間,直到到期。 您可以按天、時、分、秒設置過期時間。 一旦達到 TTL,死信消息將被丟棄或移至死信隊列(如果啟用了死信)。

  8. 鎖定時長:這是消息被接收者鎖定以進行處理的時間長度。 在此期間,其他接收者無法處理同一消息。 您可以按天、時、分、秒設置時長。

  9. 在消息過期時啟用死信:啟用後,過期的消息(即超過其 TTL)將被移至死信隊列,而不是被丟棄。 這允許進一步檢查和處理過期的消息。

  10. 啟用分區:此選項允許隊列跨多個消息代理分區,以提高可擴展性和吞吐量。 分區對於處理大量消息非常有用。

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

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

  1. 完成創建:點擊"創建"按鈕來最終創建隊列。 這些步驟確保您通過 Azure 入口網站成功創建了 Service Bus 命名空間中的隊列。

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

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 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");
        }
    }
}
$vbLabelText   $csharpLabel

代碼解釋

  1. 連接字符串和隊列名稱:
  • connectionString 變量包含您的 Azure Service Bus 命名空間的連接詳細信息。 它指定了端點、共享訪問密鑰和實體路徑(隊列名稱)。

  • queName 變量保存了您希望使用的 Service Bus 隊列的名稱。
  1. 示例設置:
  • 代碼首先打印一條消息:"Demo IronPDF with Azure.Messaging.ServiceBus."

  • 它使用 Installation.EnableWebSecurity = true; 啟用網絡安全性。
  1. 創建 service bus 客戶端:
  • ServiceBusClient 是使用提供的連接字符串創建的。

  • 此客戶端允許您與 Service Bus 實體(隊列、主題等)進行交互。
  1. 發送消息:
  • 一條內容為"IronPDF is Awesome Package"的消息被發送到指定的隊列,使用 CreateSender 方法。

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

  • 發送消息的時間戳被打印到控制台。
  1. 接收消息:
  • 使用 CreateReceiver 創建一個接收器,用於同一隊列。

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

  • 當消息被接收後,消息 ID 和正文會打印到控制台。
  1. 生成 PDF:
  • 渲染器從 HTML 內容創建 PDF(包括已發送和接收的消息)。

  • 生成的 PDF 被保存為 "AwesomeAzureServiceBusQueueAndIronPdf.pdf"。

輸出

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 10

PDF

Azure.Messaging.ServiceBus Example C# (How It Works): Figure 11

IronPDF 授權

IronPDF 套件需要授權才能運行並生成 PDF。 在訪問套件前,請在應用程式的開頭添加以下代碼。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
$vbLabelText   $csharpLabel

IronPDF 試用許可頁面上提供試用許可。

結論

在數位轉型和快速技術進步的時代,Azure Service Bus 以其可靠、可擴展和靈活的消息能力,成為全球業務現代化旅程中的關鍵組成部分,使開發人員能夠設計出能夠適應不斷變化的業務需求的強大而敏捷的解決方案。

無論是促進無縫整合、支持事件驅動架構還是確保非同步通信,Azure Service Bus 在推動創新和加速跨行業的數位化進程中發揮了變革性作用。

隨著組織繼續採納基於雲端的範式和分佈式架構,Azure Service Bus 作為 Microsoft 致力於支持開發人員和企業雲端之旅的表現。 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 Framework和操作系統的跨平台兼容性。

您如何使用 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 許可證試用頁面提供的試用許可證。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me