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

相關文章
相關標籤/搜索