C# 消息队列-Microsoft Azure service bus 服务总线

时间:2022-08-27 19:38:45

先决条件

  1. Visual Studio 2015或更高版本。本教程中的示例使用Visual Studio 2015。
  2. Azure订阅。
  注意

  要完成本教程,您需要一个Azure帐户。您可以激活MSDN订阅者优惠注册一个免费帐户

1.使用Azure门户创建一个命名空间

如果已经创建了Service Bus命名空间,请跳转到使用Azure门户部分创建队列+

创建服务命名空间

要在Azure中开始使用服务总线队列,必须首先创建一个命名空间。命名空间提供了一个用于在应用程序中寻址服务总线资源的作用域容器。

创建命名空间:

  1. 登录到Azure门户
  2. 在门户的左侧导航窗格中,单击新建,然后单击企业集成,然后单击服务总线。
  3. 在“ 创建命名空间 ”对话框中,输入命名空间名称。系统立即检查该名称是否可用。
  4. 确保命名空间名称可用后,选择定价层(基本,标准或高级)。
  5. 在预订字段中,选择要在其中创建命名空间的Azure订阅。
  6. 在“ 资源组”字段中,选择命名空间将存在的现有资源组,或创建一个新的资源组。
  7. 在位置中,选择应托管您的命名空间的国家或地区。

    C# 消息队列-Microsoft Azure service bus 服务总线

  8. 单击创建。系统现在创建您的命名空间并启用它。您可能需要等待几分钟,因为系统为您的帐户提供资源。

获取管理凭据

  1. 在命名空间列表中,单击新创建的命名空间名称。
  2. 在命名空间刀片中,单击共享访问策略。
  3. 在共享访问策略刀片中,单击RootManageSharedAccessKey。

    C# 消息队列-Microsoft Azure service bus 服务总线

  4. 在策略:RootManageSharedAccessKey刀片中,单击连接字符串主键旁边的复制按钮,将连接字符串复制到剪贴板以备将来使用。将此值粘贴到记事本或某个其他临时位置。

    C# 消息队列-Microsoft Azure service bus 服务总线

  5. 重复上一步骤,将主键的值复制并粘贴到临时位置以备将来使用。

2.使用Azure门户创建队列

如果已经创建了服务总线队列,请跳转到向队列发送消息部分。

请确保你已经创建了一个服务总线命名空间,如图所示这里

  1. 登录到Azure门户
  2. 在门户的左侧导航窗格中,单击服务总线(如果未看到服务总线,请单击更多服务)。
  3. 选择要创建队列的命名空间。在这种情况下,它是nstest1。

    C# 消息队列-Microsoft Azure service bus 服务总线

  4. 在Service Bus命名空间刀片中,选择队列,然后单击添加队列。

    C# 消息队列-Microsoft Azure service bus 服务总线

  5. 输入队列名称,并保留其他值及其默认值。

    C# 消息队列-Microsoft Azure service bus 服务总线

  6. 在刀片的底部,单击创建。

3.将消息发送到队列

要将消息发送到队列,我们​​将使用Visual Studio编写一个C#控制台应用程序。

创建控制台应用程序

  • 启动Visual Studio并创建一个新的控制台应用程序。

添加服务总线NuGet包

  1. 右键单击新创建的项目,然后选择管理NuGet包。
  2. 单击浏览选项卡,然后搜索“Microsoft Azure服务总线”并选择Microsoft Azure服务总线项目。单击安装完成安装,然后关闭此对话框。

    C# 消息队列-Microsoft Azure service bus 服务总线

编写一些代码以将消息发送到队列

  1. 将以下using语句添加到Program.cs文件的顶部。

    using Microsoft.ServiceBus.Messaging;
  2. 下面的代码添加到Main方法,设置的connectionString变量,创建命名空间时所获得的,并设置连接字符串QUEUENAME作为创建队列时使用的队列名称。

    var connectionString = "<Your connection string>";
    var queueName = "<Your queue name>"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
    var message = new BrokeredMessage("This is a test message!");
    client.Send(message);
     

    这里是你的Program.cs应该是什么样子。

     using System;
    using Microsoft.ServiceBus.Messaging; namespace GettingStartedWithQueues
    {
    class Program
    {
    static void Main(string[] args)
    {
    var connectionString = "<Your connection string>";
    var queueName = "<Your queue name>"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
    var message = new BrokeredMessage("This is a test message!"); client.Send(message);
    }
    }
    }
  3. 运行程序,并检查Azure门户。在命名空间概要刀片中单击队列的名称。请注意,活动消息计数值现在应为1。

    C# 消息队列-Microsoft Azure service bus 服务总线

4.从队列接收消息

  1. 创建一个新的控制台应用程序并添加对Service Bus NuGet包的引用,类似于上一个发送应用程序。
  2. 将以下语句using添加到Program.cs文件的顶部。

     using Microsoft.ServiceBus.Messaging;
  3. 下面的代码添加到Main方法,设置的connectionString变量,创建命名空间时所获得的,并设置连接字符串QUEUENAME如您在创建队列时使用的队列名称。

     var connectionString = "";
    var queueName = "samplequeue"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName); client.OnMessage(message =>
    {
    Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
    Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
    }); Console.ReadLine();

    这里是你的Program.cs文件应该是什么样子:

    using System;
    using Microsoft.ServiceBus.Messaging; namespace GettingStartedWithQueues
    {
    class Program
    {
    static void Main(string[] args)
    {
    var connectionString = "";
    var queueName = "samplequeue"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName); client.OnMessage(message =>
    {
    Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
    Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
    }); Console.ReadLine();
    }
    }
    }
  4. 运行程序,并检查门户。请注意,队列长度值现在应为0。

    C# 消息队列-Microsoft Azure service bus 服务总线

恭喜!您现在已创建一个队列,发送了一条消息,并收到了一条消息。

参考资料:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues

C# 消息队列-Microsoft Azure service bus 服务总线的更多相关文章

  1. 【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数

    (Azure Service Bus服务总线的两大类消息处理方式: 队列Queue和主题Topic) 问题描述 使用Service Bus作为企业消息代理,当有大量的数据堆积再Queue或Topic中 ...

  2. 微软云消息队列 Azure service bus queue

    前言 第一次使用消息队列,遇到了一些问题:同一个消息有多次出列.是一个消息只入列一次,还是多次?还是因为出列问题,出列了多次? Microsoft Azure service bus queue Az ...

  3. Azure Service Bus(一)入门简介

    一,引言 今天开始学习新的内容 Azure Service Bus(服务总线),其实也叫 "云消息服务",和 RabbitMQ,KafKa的一样都是作为消息通信服务,但是它们直接还 ...

  4. 【服务总线 Azure Service Bus】Service Bus在使用预提取&lpar;prefetching&rpar;后出现Microsoft&period;Azure&period;ServiceBus&period;MessageLockLostException异常问题

    问题描述 Service Bus接收端的日志中出现大量的MessageLockLostException异常.完整的错误消息为: Microsoft.Azure.ServiceBus.MessageL ...

  5. 【服务总线 Azure Service Bus】ServiceBus 队列中死信&lpar;DLQ - Dead Letter Queue&rpar;问题

    Azure Service Bus 死信队列产生的原因 服务总线中有几个活动会导致从消息引擎本身将消息推送到 DLQ. 如 超过 MaxDeliveryCount 超过 TimeToLive 处理订阅 ...

  6. 【Azure Service Bus】 Service Bus如何确保消息发送成功,发送端是否有Ack机制&ThinSpace;

    问题描述 Service Bus如何确保消息发送成功,发送端是否有Ack机制(是否有回调API告诉发送端,服务端已经收到消息)?根据对.NET发送Service Bus消息代码的分析,发送方法queu ...

  7. 【Azure 服务总线】Azure Service Bus中私信&lpar;DLQ - Dead Letter Queue&rpar;如何快速清理

    在博文ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题一文中,介绍了服务总线产生私信的原因及可以通过代码的方式来清楚私信队列中的消息,避免长期占用空间(因为私信中 ...

  8. Windows Azure Service Bus &lpar;2&rpar; 队列&lpar;Queue&rpar;入门

    <Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bu ...

  9. Windows Azure Service Bus &lpar;3&rpar; 队列&lpar;Queue&rpar; 使用VS2013开发Service Bus Queue

    <Windows Azure Platform 系列文章目录> 在之前的Azure Service Bus中,我们已经介绍了Service Bus 队列(Queue)的基本概念. 在本章中 ...

随机推荐

  1. &lbrack;原创&rsqb;最近使用React-Native的适配问题和警告搜集

    主要记录一下最近使用RN 0.29.2版本遇到的适配的坑以及部分警告的解法. 适配类: 安卓输入框圆角.边框颜色.粗细等无法设置成功,需要在TextInput外面新增一个View设置圆角,TextIn ...

  2. linux命令每日一练习 显示一个文件的制定行---查看命令帮助信息

    sed -n '11,12p' ××× cat ***|tail -n +12|head -n 2 tail -n +5 显示末尾五行 查看一个命令的帮助 详细的 man *** 简略的 *** -- ...

  3. C语言输出时的各种&percnt;

    d  以十进制形式输出带符号整数(正数不输出符号) o  以八进制形式输出无符号整数(不输出前缀O) x  以十六进制形式输出无符号整数(不输出前缀OX) u  以十进制形式输出无符号整数 f  以小 ...

  4. ubuntu12&period;04&plus;proftpd1&period;3&period;4a的系统用户&plus;虚拟用户权限应用实践

    目录: 一.什么是Proftpd? 二.Proftpd的官方网站在哪里? 三.在哪里下载? 四.如何安装? 1)系统用户的配置+权限控制 2)虚拟用户的配置+权限控制   一.什么是Proftpd? ...

  5. EJS 是什么 ,怎么用,以及优点

    一.什么是EJS EJS是一个JavaScript模板库,用来从JSON数据中生成HTML字符串. 二.为什么要使用EJS 与最初的JavaScript相比较,一些不太了解你的代码的人可以更容易地通过 ...

  6. 一篇文章教会你,如何做到招聘要求中的&OpenCurlyDoubleQuote;要有扎实的Java基础

    来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,“招人啦.” 然某群友曰,“群主,俺想去.” LZ回之,“你年几何?” 群友曰,“两年也.” LZ憾言之,“惜 ...

  7. congos 日期控件的简单使用

    congos 添加html的标签,然后写上js的代码,这段代码的功能是得到前一天的日期. <input type="button" value="查询" ...

  8. C语言笔记——简介与编译过程初探

    序言 从今天起,详细说说C语言.这一年多,在大多数语言和技术之间转了一大圈,终于看清楚了事实,决心静下心来好好学学C语言.初学者会认为C语言是个入门用的东西,没有必要深入研究.但对计算机领域再稍加了解 ...

  9. 使用localtunne一分钟搞定微信公众号接入

      记得15年那个刚刚进入工作的时候,公司有个微信公众号的项目,那个时候微信官方没有什么调试工具,也没有什么比较好的本地调试工具.当时有个功能需要调用微信JSSDK里面的扫一扫的功能.由于本地不能调试 ...

  10. 基于VC&plus;&plus;的网络扫描器设计与实现

    本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...