Azure Service Bus(二)在NET Core 控制台中如何操作 Service Bus Queue
- 2020 年 12 月 22 日
- 筆記
- Aazure ServiceBus, Azure
一,引言
上一篇講到關於 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 的發送,接收等操作,本文所分享的內容也存在著很多我自己的一些理解,有理解不到位的,還包含,並且指出不足之處!!!!!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
參考資料:服務匯流排消息傳遞://docs.microsoft.com/zh-cn/azure/service-bus-messaging/
github://github.com/yunqian44/Azure.ServiceBus.git
作者:Allen
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。