一,引言

  上一篇讲到关于 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. jsp自定义错误页

    1.在可能出错页面的Page标签上errorPage="/Error.jsp"指定错误页 2.Error,jsp的page标签中isErrorPage="true&quo ...

  2. Django rest framework 基础

    01: Django rest framework 基础 ​ ​ 1.1 什么是RESTful 1. REST与技术无关,代表的是一种软件架构风格(REST是Representational Stat ...

  3. 【CF983C】elevator——记忆化搜索

    (题面来自luogu) 题意翻译 题意 一个9层的楼有一个可以容纳4个人的电梯,你要管理这个电梯. 现在各层楼上有一些在排队的人,你知道他们在哪层要到哪层去.你也知道到电梯门口的顺序.根据公司的规定, ...

  4. Codeforces Round #677 (Div. 3) E、G题解

    E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...

  5. C语言讲义——二维数组

    二维数组,又称为矩形数组 可以不太准确地理解为"数组的数组" 也可以认为是一个表格 然而内存中并不是表格存储: 二维数组的初始化 第一维度可以省略 所有元素可以写在一个花括号中,计 ...

  6. 蚂蚁上市员工人均一套大 House,阿里程序员身价和这匹配吗?

    作者 | 硬核云顶宫 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 上周,蚂蚁集团迎来IPO,其发行价格将达到68.8元,总市值将突破2万亿元.市场对蚂蚁的成长性有着充分的信心,为了 ...

  7. mq消息

    同步,异步,单向 Message的扩展属性主要包含下面几个: tag:消息tag,用于消息过滤 keys:Message索引键,用多个空格隔开,可以根据这些key快速检索到消息 waitStoreMs ...

  8. 现代富文本编辑器Quill的模块化机制

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...

  9. 使用@RequestBody注解获取Ajax提交的json数据

    最近在学习有关springMVC的知识,今天学习如何使用@RequestBody注解来获取Ajax提交的json数据内容. Ajax部分代码如下: 1 $(function(){ 2 $(" ...

  10. C#中的WinForm问题——使用滚动条时页面闪烁及重影问题

    当使用鼠标进行滚动查看页面时,由于页面会频繁刷新,如果页面中控件较多会导致页面出现闪烁.重影等问题,如下图所示: 在网上搜索过该问题,大部分都说使用双缓冲可以解决此类问题,即通过设置DoubleBuf ...