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

Posted 一指流砂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 消息队列-Microsoft Azure service bus 服务总线相关的知识,希望对你有一定的参考价值。

先决条件

  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. 在位置中,选择应托管您的命名空间的国家或地区。

    技术分享

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

获取管理凭据

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

    技术分享

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

    技术分享

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

2.使用Azure门户创建队列

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

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

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

    技术分享

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

    技术分享

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

    技术分享

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

3.将消息发送到队列

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

创建控制台应用程序

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

添加服务总线NuGet包

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

    技术分享

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

  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。

    技术分享

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。

    技术分享

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

 

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

 
 
 

以上是关于C# 消息队列-Microsoft Azure service bus 服务总线的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure 函数将消息写入 Azure 服务总线队列

如何查看 Azure 服务总线队列中的所有消息?

使用 python 在 Azure 队列中设置消息的 messagettl

Azure Messaging-ServiceBus Messaging消息队列技术系列8-服务总线配额

Azure Messaging

如何在C#中使用MSMQ