跳過到頁腳內容
.NET幫助

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

在今日互聯的數位環境中,有效率的溝通是企業成功的基石。 無論是在應用程式之間傳輸重要資料,或是確保分散式系統之間的即時更新,可靠的訊息傳輸基礎架構都是不可或缺的。

Azure服務匯流排,一種以雲端為基礎的訊息傳送服務,是一種強大的解決方案,可讓開發人員建立可擴充、解耦且具彈性的應用程式。 讓我們深入 Azure Service Bus 的領域,瞭解其重要性並探索其無數的功能。 在本文稍後,我們還會介紹 IronPDF 來管理、產生和讀取 PDF 文件。

瞭解 Azure Service Bus

Azure Service Bus 是完全受管理的企業整合訊息中介,可促進應用程式與服務之間的可靠通訊,不論它們是在雲端、內部或混合環境中執行。

它提供了靈活的訊息傳送功能,包括佇列和發佈/訂閱機制,以實現分散式系統中不同元件之間的無縫通訊。 此外,它允許批次訊息,即允許在不超出總大小限制的情況下傳送多條訊息。

Azure Service Bus 提供以下優點:

1.解耦應用程式:服務總線允許您將應用程式和服務彼此分開。 這種解耦的方式增強了可靠性和可擴展性。 2.負載平衡:它在相互競爭的工人之間平衡工作,確保高效率的資源利用。 3.訊息傳輸:資料透過訊息在應用程式和服務之間傳輸。 這些訊息的訊息正文可以包含各種類型的資料,例如 JSON、XML 或純文字。 4.訊息傳遞場景:常見場景包括傳輸業務資料(例如銷售訂單)、負載平衡以及使用主題和訂閱建立發布者和訂閱者之間的關係。 5.事務:服務總線支援原子事務,允許在單一事務範圍內執行多個操作。 交易會有多個並發呼叫,而訊息批次則只有單一呼叫。 6.訊息會話:它有助於大規模協調工作流程和有序的訊息傳輸。

主要特點和功能

1.佇列和主題: Azure 服務總線提供佇列和主題作為通訊管道。 佇列可實現點對點通訊,確保每個訊息只由一個接收者處理,因此非常適用於工作負載分佈和負載平衡情境。 另一方面,主題支援發佈/訂閱訊息模式,允許多個訂閱者獨立接收相關訊息,並促進可擴充的事件驅動架構。

2.可靠的訊息傳送:使用 Azure Service Bus,訊息傳送本身就是可靠的。 它可確保訊息的持久性、可設定訊息和錯誤處理器、容錯和至少一次傳送語意,將資料遺失或重複的風險降至最低。 此外,它還支援事務,可在多個訊息之間進行原子操作,從而確保資料的完整性。

3.死字處理與重試原則:為了有效處理錯誤的訊息,Azure 服務總線提供死字處理功能,可將有問題的訊息自動移至獨立的佇列,以便進行分析與故障排除。 此外,它還能提供彈性的重試原則,讓開發人員可以設定自動重試與指數級的關閉策略,增強應用程式在面臨瞬間故障時的彈性。

4.分區與擴充:Azure 服務匯流排支援訊息傳送實體的分區,以將工作負載分散到多個節點,確保水平擴充能力和高吞吐量。 這項能力對於處理大量訊息、適應不斷變化的工作負載,同時不影響效能或可靠性而言,至關重要。

5.與 Azure Ecosystem 整合:Azure Service Bus 可與其他 Azure 服務(例如 Azure Functions、Logic Apps、Event Grid 和 Azure Kubernetes Service (AKS))無縫整合,讓開發人員可以輕鬆建立端對端的解決方案。 Azure Service Bus 是建立強大的事件驅動架構的關鍵,無論是回應傳入的訊息而觸發 serverless 功能,或是使用 Logic Apps 來協調複雜的工作流程。

IronPDF 簡介

Azure.Messaging.ServiceBus 示例 C# (如何運作):圖 1

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

  1. HTML 轉 PDF:

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

    • 使用 Chrome Rendering Engine 繪製像素完美的 PDF。

    • 從 URL、HTML 檔案或 HTML 字串產生 PDF。

2.圖片和內容轉換:

* 將圖像轉換成 PDF 或從 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.在左側導覽窗格中,從類別清單中選擇"整合"。 4.將滑鼠移至"Service Bus",然後按一下 Service Bus 磚塊上的"+"按鈕。

Azure.Messaging.ServiceBus 示例 C# (如何運作):圖 6

若要設定"建立命名空間"頁面的"基本"標籤,請遵循下列步驟:

1.訂閱:選擇要建立命名空間的 Azure 訂閱。 2.資源組:選擇命名空間所在的現有資源組,或建立新的資源組。

3.命名空間名稱:輸入命名空間的名稱。 確保名稱符合下列標準:

* 在 Azure 中必須是獨一無二的。

* 長度必須介於 6 到 50 個字元之間。

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

* 必須以字母開頭,並以字母或數字結束。

* 不能以 "-sb" 或 "-mgmt" 結尾。

4.位置:選擇您的命名空間應託管的區域。 5.定價層級:選擇命名空間的定價層級(基本、標準或進階)。 在本範例中,請選擇標準。

6.選擇頁面底部的 Review + Create

Azure.Messaging.ServiceBus 示例 C# (如何運作):圖 7

7.在 Review + Create 頁面中選擇"建立"。

8.資源部署成功後,前往資源

您看到服務匯流排名稱空間的首頁。

在 Azure 入口網站中建立服務匯流排隊。

若要在您的 Service Bus 命名空間中設定佇列,請遵循下列步驟: 1.導覽至佇列:前往 Azure 入口網站中的服務總線命名空間頁面。 從左側導覽功能表中選擇"佇列"。 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 示例 C# (如何運作):圖 8

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

安裝 Azure.Messaging.ServiceBus(一個 Service Bus 客戶端程式庫),以使用連線字串連接至 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)); // 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 服務總線命名空間的連線詳細資訊。 它指定了端點、共用存取金鑰和實體路徑(佇列名稱)。

* `queName` 變數保存你要操作的服務總線佇列的名稱。

2.演示設定:

* 程式碼一開始會列印一則訊息"使用 Azure.Messaging.ServiceBus 演示 IronPDF"。

* 它使用 `Installation.EnableWebSecurity = true;` 啟用 Web 安全性。

3.建立服務總線客戶端:

* 使用提供的連接字串建立 `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 示例 C# (如何運作):圖 10

PDF

Azure.Messaging.ServiceBus 示例 C# (如何運作):圖 11

IronPDF 授權。

IronPDF 套件需要授權才能執行和產生 PDF。 在存取套件之前,在應用程式的開頭加入下列程式碼。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
Imports IronPdf

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

IronPDF試用授權頁面提供試用授權。

結論

在這個以數位轉型和快速技術進步為特點的時代,Azure 服務匯流排成為全球企業現代化過程中的關鍵元件。透過提供可靠、可擴充且靈活的訊息傳輸功能,它讓開發人員能夠建構彈性且敏捷的解決方案,以適應不斷演進的業務需求。

無論是促進無縫整合、啟用事件驅動架構,或是確保異步通訊,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技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我