一,引言

  上一篇讲到关于 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”

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

点击图中的 “Create” 进行创建

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

输入对应的参数列表

Resource group 选择创建一个新的:“Web_Test_SB_RG”

Namespace name:“cnbateblogweb”

Loaction:“East Asia”

Pricing tier:“Basic”

点击 “Review + create” 进行创建预校验。校验完成后,点击 “Create” 进行创建

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

等待一会,等创建完成后,我们跳转到刚刚创建好的 “cnbateblogweb” 的 Service Bus 中。

选择 “Setting =》Shared access policies”,点击选中的 “Policy” 查看 “Primary Connection String”

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

复制图中的 “Primary Connection String”,并且保存到其他位置,稍后在实际操作Service Bus 的代码中需要配置这个连接字符串。

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

最后一步,我们需要创建Service Bus Queue,选择 “Entities =》Queues”,点击 “+ Queue” 进行创建

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

需要输入 Queue 的的相关参数

Name:“cnbateblogweb_queue”

Max queue size 选择默认:“1GB”

Max delivery count (最大传递数)选择默认:“10”

点击 “Create” 进行创建

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

创建完成后,就可以看到当前列表的Queue的信息

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

2,NET Core 控制台应用添加对Service Bus Queue 的相应方法

2.1,创建 .NET Core 控制台应用,添加对 Azure.Message.ServiceBus 的引用 “Azure.Messaging.ServiceBus

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

使用程序包管理控制台进行安装

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 信息

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

F5运行,可以看到控制台打印出的日志数据,成功将数据写入到Service Bus Queue 中

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

同时,我们登录到Azure Portal中,查看Service Bus Queue 中有没有写入的数据

选择 “Entities =》Queues”,点击 “cnbateblogweb_queue” 进入Service Bus Queue 中

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

可以看到概述页面显示 “Message Count” 计数为 1,以及写入了1条数据

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

点击 “Setting = 》Service Bus Explorer(preview)” ,切换 “Peek” 页,点击 “Peek”进行查看具体的 message 信息

快速查看消息以查看 “cnbateblogweb_queue”的快照

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

提示成功查看信息,并且在页面上显示出 message 信息,点击当前信息查看具体信息内容

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

可以看到消息体中正是我们刚刚发送的内容

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

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 

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

12-23 05:50