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 簡介

IronPDF 是一個功能強大的 C# PDF 函式庫,可讓您在 .NET 專案中產生、編輯 PDF 文件,並從 PDF 文件中抽取內容。 以下是一些主要特點:
-
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 建立一個控制台應用程式,如下所示。

提供專案名稱

提供 .NET 版本

安裝 IronPDF 套件。

建立 Azure 服務匯流排
在 Azure 中建立具有唯一名稱的命名空間。 命名空間是服務總線資源的容器,例如應用程式中的佇列和主題。
以下是如何建立命名空間:
1.登入 Azure 入口網站。 2.前往"所有服務"頁面。 3.在左側導覽窗格中,從類別清單中選擇"整合"。 4.將滑鼠移至"Service Bus",然後按一下 Service Bus 磚塊上的"+"按鈕。

若要設定"建立命名空間"頁面的"基本"標籤,請遵循下列步驟:
1.訂閱:選擇要建立命名空間的 Azure 訂閱。 2.資源組:選擇命名空間所在的現有資源組,或建立新的資源組。
3.命名空間名稱:輸入命名空間的名稱。 確保名稱符合下列標準:
* 在 Azure 中必須是獨一無二的。
* 長度必須介於 6 到 50 個字元之間。
* 只能包含字母、數字和連字符"-"。
* 必須以字母開頭,並以字母或數字結束。
* 不能以 "-sb" 或 "-mgmt" 結尾。
4.位置:選擇您的命名空間應託管的區域。 5.定價層級:選擇命名空間的定價層級(基本、標準或進階)。 在本範例中,請選擇標準。
6.選擇頁面底部的 Review + Create。

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 佇列的行為和效能,確保符合應用程式的需求。

4.完成建立:點選"建立"按鈕完成佇列的建立。 這些步驟可確保您使用 Azure 入口網站在 Service Bus 命名空間中成功建立佇列。
安裝 Azure.Messaging.ServiceBus(一個 Service Bus 客戶端程式庫),以使用連線字串連接至 Azure 佇列。

新增以下程式碼,使用 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
程式碼解釋
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"。
輸出


IronPDF 授權。
IronPDF 套件需要授權才能執行和產生 PDF。 在存取套件之前,在應用程式的開頭加入下列程式碼。
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY"
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 許可證試用頁面提供的試用許可證。



