Azure Service Bus(二)在NET Core 控制台中如何操作 Service Bus Queue
一,引言
上一篇讲到关于 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
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。