一,引言

  上一篇讲到关于 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. 头秃了,使用@AutoConfigureBefore指定配置类顺序竟没生效?

    持续原创输出,点击上方蓝字关注我 前言 日常工作中对于Spring Boot 提供的一些启动器可能已经足够使用了,但是不可避免的需要自定义启动器,比如整合一个陌生的组件,也想要达到开箱即用的效果. 在 ...

  2. 对Tarjan——有向图缩点算法的理解

    开始学tarjan的时候,有关无向图的割点.桥.点双边双缩点都比较容易地理解了,唯独对有向图的缩点操作不甚明了.通过对luoguP2656_采蘑菇一题的解决,大致搞清了tarjan算法的正确性. 首先 ...

  3. ubuntu 安装scapy

    官网下载最新安装包:https://scapy.net/ 下载之后进入相应文件夹解压: 然后进入相关文件夹启动setup.py: 成功:

  4. 零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。

    输入格式:第一行输入需要凑的钱数 m 和硬币的种类 n (0<m<100,0<n<10),第二行输入 n 种硬币的具体币值,假设硬币供应量无限多. 输出格式:输出最少需要的硬币 ...

  5. Python链式赋值执行顺序及执行方式的证明

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在<关于Python链式赋值的赋值顺序问题& ...

  6. 第2章 Python编程基础知识目录

    第2.1节 简单的Python数据类型.变量赋值及输入输出 第2.2节 Python的语句 第2.3节 Python运算符大全 老猿Python,跟老猿学Python! 博客地址:https://bl ...

  7. PyQt(Python+Qt)学习随笔:QTreeWidget中标题相关属性访问方法headerItem、setHeaderLabels

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件窗口可以有一个标题头,其中包含部件中每个列的节(即标题).QTreeWidget的标题属性包 ...

  8. Python正则表达式书写容易碰到的陷阱:\W*和\W*?匹配过程遇到的问题

    老猿在分析<Python正则表达式\W+和\W*匹配过程的深入分析>中的问题时,想到一个问题,如果"re.split('(\W*)','Hello,world')"的处 ...

  9. PyQt(Python+Qt)学习随笔:QTableView的cornerButtonEnabled属性

    老猿Python博文目录 老猿Python博客地址 cornerButtonEnabled属性用于控制是否启用左上角的按钮.如果此属性为True,则启用视图左上角的按钮,单击此按钮将选择表视图中的所有 ...

  10. 基础篇——怎么使用PowerDesigner进行数据库初始化

    1.使用PowerDesigner打开设计好的 .pdm文件 2.点击工具栏中的Database-->Database Generation-->Preview,就可以看到生成的创建数据库 ...