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

一,引言

  上一篇講到關於 Azure ServiceBus 的一些概念,講到 Azure Service Bus(服務總線),其實也叫 」雲消息服務「,是微軟在Azure 上提供的一種 」雲消息服務「,在應用和服務之間傳遞消息時,即便消息的接受着處於脫機狀態下,也不影響接收者在聯機後接收信息。消息採用二進制格式,可能包含 JSON、XML 或純文本。那麼今天就帶着上一節內容來動手實踐一番,經過如何在 .NET Core 控制檯應用程序和Azure Service Bus之間創建簡單的鏈接是如何將消息添加到 Service Bus Queue中的。html

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

Azure ServiceBus 系列:github

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」web

點擊圖中的 「Create」 進行建立json

輸入對應的參數列表windows

Resource group 選擇建立一個新的:「Web_Test_SB_RG」api

Namespace name:「cnbateblogweb」bash

Loaction:「East Asia」app

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 

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

相關文章
相關標籤/搜索