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,*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。
Azure Service Bus(二)在NET Core 控制台中如何操作 Service Bus Queue的更多相关文章
- Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储
一,引言 上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用Azure Blob Storage 来存储项目中的一些日志文件,用户头像,用户视频等等. ...
- Azure Data Lake(一) 在NET Core 控制台中操作 Data Lake Storage
一,引言 Azure Data Lake Storage Gen2 是一组专用于大数据分析的功能,基于 Azure Blob Storage 构建的.Data Lake Storage Gen2 包含 ...
- 在.NET Core控制台中使用依赖注入
本文介绍如何在控制台应用程序中使用微软提供的依赖注入功能,掌握控制台中的用法后,可以扩展到构建windows服务中. 创建控制台应用程序 添加DependencyInjection的引用 Instal ...
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]
原文:WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇] 在[第2篇]中,我们深入剖析了单调(PerCall)模式下WCF对服务实例生命周期的控制,现在我们来 ...
- Azure AD Domain Service(二)为域服务中的机器配置 Azure File Share 磁盘共享
一,引言 Azure File Share 是支持两种认证方式的! 1)Active Directory 2)Storage account key 记得上次分析的 "Azure File ...
- Azure Functions(二)集成 Azure Blob Storage 存储文件
一,引言 上一篇文章有介绍到什么是 SeverLess ,ServerLess 都有哪些特点,以及多云环境下 ServerLess 都有哪些解决方案.在这众多解决方案中就包括 Function App ...
- Azure Cosmos DB (二) SQL API 操作
一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...
- Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源
一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...
- Android 四大组件之 Service(二)
这里主要介绍Service组件的使用. 1.定义一个继承Service的子类 如下: package com.service; import android.app.Service; import a ...
随机推荐
- 头秃了,使用@AutoConfigureBefore指定配置类顺序竟没生效?
持续原创输出,点击上方蓝字关注我 前言 日常工作中对于Spring Boot 提供的一些启动器可能已经足够使用了,但是不可避免的需要自定义启动器,比如整合一个陌生的组件,也想要达到开箱即用的效果. 在 ...
- 对Tarjan——有向图缩点算法的理解
开始学tarjan的时候,有关无向图的割点.桥.点双边双缩点都比较容易地理解了,唯独对有向图的缩点操作不甚明了.通过对luoguP2656_采蘑菇一题的解决,大致搞清了tarjan算法的正确性. 首先 ...
- ubuntu 安装scapy
官网下载最新安装包:https://scapy.net/ 下载之后进入相应文件夹解压: 然后进入相关文件夹启动setup.py: 成功:
- 零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。
输入格式:第一行输入需要凑的钱数 m 和硬币的种类 n (0<m<100,0<n<10),第二行输入 n 种硬币的具体币值,假设硬币供应量无限多. 输出格式:输出最少需要的硬币 ...
- Python链式赋值执行顺序及执行方式的证明
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在<关于Python链式赋值的赋值顺序问题& ...
- 第2章 Python编程基础知识目录
第2.1节 简单的Python数据类型.变量赋值及输入输出 第2.2节 Python的语句 第2.3节 Python运算符大全 老猿Python,跟老猿学Python! 博客地址:https://bl ...
- PyQt(Python+Qt)学习随笔:QTreeWidget中标题相关属性访问方法headerItem、setHeaderLabels
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件窗口可以有一个标题头,其中包含部件中每个列的节(即标题).QTreeWidget的标题属性包 ...
- Python正则表达式书写容易碰到的陷阱:\W*和\W*?匹配过程遇到的问题
老猿在分析<Python正则表达式\W+和\W*匹配过程的深入分析>中的问题时,想到一个问题,如果"re.split('(\W*)','Hello,world')"的处 ...
- PyQt(Python+Qt)学习随笔:QTableView的cornerButtonEnabled属性
老猿Python博文目录 老猿Python博客地址 cornerButtonEnabled属性用于控制是否启用左上角的按钮.如果此属性为True,则启用视图左上角的按钮,单击此按钮将选择表视图中的所有 ...
- 基础篇——怎么使用PowerDesigner进行数据库初始化
1.使用PowerDesigner打开设计好的 .pdm文件 2.点击工具栏中的Database-->Database Generation-->Preview,就可以看到生成的创建数据库 ...