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

先决条件

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

  要完成本教程,您须要一个Azure账户。您能够激活MSDN订阅者优惠注册一个免费账户web

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

若是已经建立了Service Bus命名空间,请跳转到使用Azure门户部分建立队列+app

建立服务命名空间

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

建立命名空间:spa

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

    建立命名空间

  8. 单击建立系统如今建立您的命名空间并启用它。您可能须要等待几分钟,由于系统为您的账户提供资源。

获取管理凭据

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

    链接信息

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

    链接字符串

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

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服务总线项目。单击安装完成安装,而后关闭此对话框。

    选择一个NuGet包

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

  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

相关文章
相关标签/搜索