Azure Service Bus(二)在NET Core 控制檯中如何操作 Service Bus Queue

Grant_Allen發表於2020-12-22

一,引言

  上一篇講到關於 Azure ServiceBus 的一些概念,講到 Azure Service Bus(服務匯流排),其實也叫 ”雲訊息服務“,是微軟在Azure 上提供的一種 ”雲訊息服務“,在應用和服務之間傳遞訊息時,即使訊息的接受著處於離線狀態下,也不影響接收者在聯機後接收資訊。訊息採用二進位制格式,可能包含 JSON、XML 或純文字。那麼今天就帶著上一節內容來動手實踐一番,通過如何在 .NET Core 控制檯應用程式和Azure Service Bus之間建立簡單的連線是如何將訊息新增到 Service Bus Queue中的。

--------------------我是分割線--------------------

Azure ServiceBus 系列:

1,Azure Service Bus(一)入門簡介

2,Azure Service Bus(二)在NET Core 控制檯中如何操作 Service Bus Queue

二,正文

1,Azure Portal 上建立 Service Bus Queue

登入到Azure Portal 上後,點選 “Create a resource”,搜尋 “Service Bus”

點選圖中的 “Create” 進行建立

輸入對應的引數列表

Resource group 選擇建立一個新的:“Web_Test_SB_RG”

Namespace name:“cnbateblogweb”

Loaction:“East Asia”

Pricing tier:“Basic”

點選 “Review + create” 進行建立預校驗。校驗完成後,點選 “Create” 進行建立

等待一會,等建立完成後,我們跳轉到剛剛建立好的 “cnbateblogweb” 的 Service Bus 中。

選擇 “Setting =》Shared access policies”,點選選中的 “Policy” 檢視 “Primary Connection String”

複製圖中的 “Primary Connection String”,並且儲存到其他位置,稍後在實際操作Service Bus 的程式碼中需要配置這個連線字串。

最後一步,我們需要建立Service Bus Queue,選擇 “Entities =》Queues”,點選 “+ Queue” 進行建立

需要輸入 Queue 的的相關引數

Name:“cnbateblogweb_queue”

Max queue size 選擇預設:“1GB”

Max delivery count (最大傳遞數)選擇預設:“10”

點選 “Create” 進行建立

建立完成後,就可以看到當前列表的Queue的資訊

 

 

2,NET Core 控制檯應用新增對Service Bus Queue 的相應方法

2.1,建立 .NET Core 控制檯應用,新增對 Azure.Message.ServiceBus 的引用 “Azure.Messaging.ServiceBus

使用程式包管理控制檯進行安裝

Install-Package Azure.Messaging.ServiceBus -Version 7.0.0

2.2,獲取 ServiceBus Client

由於ServiceBusClient 實現了 IAsyncDisposable,因此我們 await using 來建立 ServiceBusClient 物件

await using var queueClient = new ServiceBusClient(Appsettings.app("ServiceBus", "PrimaryConnectionString"));

傳送資訊到Queue

// create the sender
ServiceBusSender sender = queueClient.CreateSender(Appsettings.app("ServiceBus", "QueueName"));
string messageBody = JsonSerializer.Serialize(msg);
// create a message that we can send. UTF-8 encoding is used when providing a string.
ServiceBusMessage message = new ServiceBusMessage(messageBody);

// send the message
await sender.SendMessageAsync(message);
Console.WriteLine($"Sending message: {messageBody} success");

接收資訊

// create a receiver that we can use to receive the message
ServiceBusReceiver receiver = queueClient.CreateReceiver(Appsettings.app("ServiceBus", "QueueName"));

// the received message is a different type as it contains some service set properties
ServiceBusReceivedMessage receivedMessage = await receiver.ReceiveMessageAsync();

// get the message body as a string
string body = receivedMessage.Body.ToString();
Console.WriteLine(body);

完成資訊並且從當前 Queue 中刪除資訊

// create a receiver that we can use to receive the message
ServiceBusReceiver receiver = queueClient.CreateReceiver(Appsettings.app("ServiceBus", "QueueName"));
ServiceBusReceivedMessage peekedMessage = await receiver.ReceiveMessageAsync();

await receiver.CompleteMessageAsync(peekedMessage);

 檢視資訊(PeekMessage)-----獲取下一個活動的ServiceBusReceivedMessage而不更改接收者或訊息源的狀態。

// create a receiver that we can use to receive the message
ServiceBusReceiver receiver = queueClient.CreateReceiver(Appsettings.app("ServiceBus", "QueueName"));
ServiceBusReceivedMessage peekedMessage = await receiver.PeekMessageAsync();

// get the message body as a string
string body = peekedMessage.Body.ToString();
Console.WriteLine(body);

配置檔案 appseting.json

{
  "ServiceBus": {
    "PrimaryConnectionString": "Endpoint=sb://cnbateblogweb.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=ZEJqhFZ3XXXSSXv1Frr61Zad0M8a4dh9WFaWXTGzxSseIw=",
    "QueueName": "CNBATEBLOGWEB_QUEUE"
} }

完整程式碼請檢視文章底部的程式碼庫地址

3,測試-----傳送資訊到Service Bus Queue,並且獲取 Queue 資訊

F5執行,可以看到控制檯列印出的日誌資料,成功將資料寫入到Service Bus Queue 中

同時,我們登入到Azure Portal中,檢視Service Bus Queue 中有沒有寫入的資料

選擇 “Entities =》Queues”,點選 “cnbateblogweb_queue” 進入Service Bus Queue 中

可以看到概述頁面顯示 “Message Count” 計數為 1,以及寫入了1條資料

點選 “Setting = 》Service Bus Explorer(preview)” ,切換 “Peek” 頁,點選 “Peek”進行檢視具體的 message 資訊

快速檢視訊息以檢視 “cnbateblogweb_queue”的快照

提示成功檢視資訊,並且在頁面上顯示出 message 資訊,點選當前資訊檢視具體資訊內容

可以看到訊息體中正是我們剛剛傳送的內容

ok,接下來關於接收資訊,完成資訊,檢視資訊我就不一一演示了,大家可以自行下載程式碼進行測試。

bingo,*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。?‍??‍??‍??‍?

三,結尾

  OK,今天的分享到此結束,同時時間操作在Azure Portal 上建立Service Bus Queue,並且通過程式碼實現Service Bus Queue 的傳送,接收等操作,本文所分享的內容也存在著很多我自己的一些理解,有理解不到位的,還包含,並且指出不足之處!!!!!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

參考資料:服務匯流排訊息傳遞https://docs.microsoft.com/zh-cn/azure/service-bus-messaging/

github:https://github.com/yunqian44/Azure.ServiceBus.git

作者:Allen 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

相關文章