.NET 幫助

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

發佈 2024年8月13日
分享:

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

Azure 服務匯流排,雲端訊息服務成為一個強大的解決方案,能夠賦予開發者構建具可擴展性、解耦合且具有彈性的應用程式的能力。 讓我們深入研究 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 服務匯流排支援消息實體的分區,以將工作負載分配到多個節點,從而確保橫向擴展和高吞吐量。 此功能對於處理大量訊息以及在不影響效能或可靠性的情況下應對波動工作負載至關重要。

  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 標準(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. Max Queue Size:這定義了隊列的最大存儲容量。 您可以將其設置為 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 範例 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
VB   C#

程式碼說明

  1. 連接字串和佇列名稱:

    • connectionString 變數包含您的 Azure Service Bus 命名空間的連接詳情。 它指定了端點、共享訪問密鑰和實體路徑。(佇列名稱).

    • queName 變數儲存您要操作的服務匯流排隊列的名稱。
  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
VB   C#

試用許可證可在IronPDF 試用許可證頁面.

結論

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

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

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

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

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

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >