一,引言

  上一篇讲到关于 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. celery配置与基本使用

    目录 1.celery配置与基本使用 1.1 安装celery 2.测试celery 2.1启动celery 1.celery配置与基本使用 1.1 安装celery # celery_task/ma ...

  2. C++重复结构题解

    买房子 总时间限制:  1000ms 内存限制:  65536kB 描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该 ...

  3. dubbo源码调试

    1.从github上clone下duboo的源码并checkout tag到2.6.5可以看到如下的结构: 其中all-dubbo的pom如下: 这里会将dubbo的其他项目在package的时候打到 ...

  4. 解决 JPA 插入 MySQL 时间与实际时间差 13 个小时问题

    问题描述 公司使用的阿里云数据库服务器,插入时间与实际时间差 13 个小时 执行 show variables like "%time_zone%"; 结果如下: Variable ...

  5. win10拔下电源会黑一下屏

  6. 关于java链接装载的思考

    遇到个bug,noClassFoundEx,很常见. 但是问题来了. 比如我的服务器目录是 /opt/tomcat/webapps/ROOT/WEB-INF/classes/cn/controller ...

  7. bugku login4

    (前排提示:这次思路写的极不清晰,可能只有我自己看的懂,打个预防针QAQ) 首先看题: 扫描,拿到了 .index.php.swp 这个文件是可以复原的. 上面的是重要的源码.审计之后发现这是CBC加 ...

  8. 乌云1000个PHP代码审计案例(1)

    前两天发现的宝藏网站:https://php.mengsec.com/ 在github上面找到了源代码:https://github.com/Xyntax/1000php,可以在自己的服务器上面搭建 ...

  9. flask中SQLAlchemy学习

    ------------------------------------2019-08-22 17:53:54更新------------------------------ SQLALchemy实在 ...

  10. 交叉熵损失函数,以及pytorch CrossEntropyLoss的理解

    实际运用例子: https://zhuanlan.zhihu.com/p/35709485 pytorch CrossEntropyLoss,参考博客如下: https://mathpretty.co ...