.NET 幫助

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

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

Azure Service Bus 是一種基於雲端的訊息服務,成為強而有力的解決方案,讓開發者能夠構建具可擴展、解耦及高韌性的應用程式。 讓我們深入研究 Azure Service Bus,了解其重要性並探索其多樣的功能。 在本文的後面,我們還將探討IronPDF來管理、生成和閱讀 PDF 文檔。

理解 Azure 服務匯流排

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 服務匯流排都是構建強大事件驅動架構的關鍵。

IronPDF 介紹

Azure.Messaging.ServiceBus 範例 C#(運行方式):圖 1

IronPDF 是一個強大的 C# PDF 函式庫,可讓您在 .NET 專案中生成、編輯和提取 PDF 文件的內容。 以下是一些主要功能:

  1. HTML 轉換為 PDF

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

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

    • 從 URLs、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 服務匯流排

在 Azure 中創建一個名稱唯一的命名空間。 命名空間是應用程式中用於服務匯流排資源(例如佇列和主題)的容器。

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

  1. 登入 Azure 入口網站。

  2. 前往「所有服務」頁面。

  3. 在左側導航窗格中,從類別列表中選擇「Integration」。

  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. 一旦資源部署成功,前往資源

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

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

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

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

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

  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

  4. 完成創建:點擊「創建」按鈕以完成佇列的創建。 這些步驟確保您使用 Azure 入口網站在您的 Service Bus 命名空間中成功建立佇列。

    安裝 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
$vbLabelText   $csharpLabel

程式碼說明

  1. 連接字串和佇列名稱

    • connectionString 變數包含了 Azure 服務匯流排名稱空間的連接詳細資訊。 它指定了端點、共享訪問金鑰和實體路徑(佇列名稱)。

    • 變數queName保存你想要使用的Service Bus隊列的名稱。
  2. 示範設置

    • 程式碼開始時會打印一條訊息:「演示 IronPDF 與 Azure.Messaging.ServiceBus。」

    • 它透過使用 Installation.EnableWebSecurity = true; 啟用網路安全。
  3. 建立服務匯流排客戶端

    • ServiceBusClient 是使用提供的連接字串建立的。

    • 此用戶端允許您與服務匯流排實體(佇列、主題等)互動。
  4. 發送訊息

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

    • 該消息是使用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
$vbLabelText   $csharpLabel

試用授權可在IronPDF 試用授權頁面獲取。

結論

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

無論是促進無縫整合、實現事件驅動架構,還是確保非同步通信,Azure Service Bus 在推動創新和加速各行業數位化計劃中扮演了變革性的角色。

隨著組織繼續採用雲端原生範式和分散式架構,Azure Service Bus 作為微軟致力於在邁向雲端之旅中支持開發人員和企業的證明。 IronPDF 簡化了在 .NET 應用程式中生成 PDF 的過程,提供靈活性和功能性,允許從程式碼直接建立專業級文件。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
WebGrease .NET Core(開發人員如何使用)
下一個 >
簡單注入器C#(對開發者的運作原理)