一,引言

  上一篇讲到关于 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的更多相关文章

  1. Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储

    一,引言 上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用Azure Blob Storage 来存储项目中的一些日志文件,用户头像,用户视频等等. ...

  2. Azure Data Lake(一) 在NET Core 控制台中操作 Data Lake Storage

    一,引言 Azure Data Lake Storage Gen2 是一组专用于大数据分析的功能,基于 Azure Blob Storage 构建的.Data Lake Storage Gen2 包含 ...

  3. 在.NET Core控制台中使用依赖注入

    本文介绍如何在控制台应用程序中使用微软提供的依赖注入功能,掌握控制台中的用法后,可以扩展到构建windows服务中. 创建控制台应用程序 添加DependencyInjection的引用 Instal ...

  4. WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]

    原文:WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇] 在[第2篇]中,我们深入剖析了单调(PerCall)模式下WCF对服务实例生命周期的控制,现在我们来 ...

  5. Azure AD Domain Service(二)为域服务中的机器配置 Azure File Share 磁盘共享

    一,引言 Azure File Share 是支持两种认证方式的! 1)Active Directory 2)Storage account key 记得上次分析的 "Azure File ...

  6. Azure Functions(二)集成 Azure Blob Storage 存储文件

    一,引言 上一篇文章有介绍到什么是 SeverLess ,ServerLess 都有哪些特点,以及多云环境下 ServerLess 都有哪些解决方案.在这众多解决方案中就包括 Function App ...

  7. Azure Cosmos DB (二) SQL API 操作

    一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...

  8. Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源

    一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...

  9. Android 四大组件之 Service(二)

    这里主要介绍Service组件的使用. 1.定义一个继承Service的子类 如下: package com.service; import android.app.Service; import a ...

随机推荐

  1. ceph 集群快速部署

    1.三台Centos7的主机 [root@ceph-1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)    2.主机 ...

  2. Nginx搭建文件共享服务器

    前言 Nginx除了做正反向代理和负载均衡,还能做动静分离服务器,如此便可以当作文件共享服务器使用. 环境 WIN 10 Vmware Workstation 15 Player CentOS Lin ...

  3. 如何解析 redis 的 rdb 文件

    目录 安装工具 解析 redis 的 rdb 文件 命令行工具使用,先看 --help 生成内存报告 使用参数过滤想要的数据 比较两个 rdb 文件 查看一个 key 的内存使用情况 常见问题 FAQ ...

  4. IPSec传输模式/隧道模式下ESP报文的装包与拆包过程

    IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...

  5. MySQL中的事务原理和锁机制

    本文主要总结 MySQL 事务几种隔离级别的实现和其中锁的使用情况. 在开始前先简单回顾事务几种隔离级别以及带来的问题. 四种隔离级别:读未提交.读已提交.可重复读.可串行化. 带来的问题:脏读.不可 ...

  6. js实现视频截图,视频批量截图,canvas实现

    截取视频的某一时间的图像并保存 利用canvas的绘画能力画出视频某一帧的视频画面, 获得到图像之后转换成base64图像, 再利用a标签的实现自动保存到本地 html代码 <!DOCTYPE ...

  7. Fiddler 4 (利用Fiddler模拟恶劣网络环境)

    1.模拟弱网环境 打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多 解决办法去掉勾选的地方网 ...

  8. 通俗易懂方式解说Python中repr(变量)和str(变量)函数的区别

    老猿在<Python中repr(变量)和str(变量)的返回值有什么区别和联系>介绍了repr(变量)和str(变量)的区别和联系(对应特殊方法__repr__和__str__),但老猿刚 ...

  9. Python模块是否支持自定义属性使用双下划线开头和结尾?

    我们知道在Python中,变量名类似__xxx__的,也就是以双下划线开头并且以双下划线结尾的变量和方法,是特殊变量,特殊变量是可以直接访问的,不是私有变量,所以,一般实例变量和类变量以及方法不能用_ ...

  10. PyQt学习遇到的问题:重写notify发送的消息为什么首先给了一个QWindow对象?

    在PyQt开发图形界面应用时,从QApplication派生的子类重写notify方法后(具体请参考<PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消 ...