2016-07-24 8 views
0

One Publisher to Many Subscriberプロトタイプを作成しようとしています。Azure Pub/Subほとんどの作業

サブスクライバーはメッセージを確実に受信しています。 2番目のサブスクライバをインスタンス化するまでその場合、各加入者は、加入を受信すると交互に交代し、他の加入者インスタンスは交信しない。メッセージが公開されるたびに各クライアントが各クライアントを受け取ることを確認します。

ここはサブスクライバです。

using Microsoft.ServiceBus; 
using Microsoft.ServiceBus.Messaging; 
using System; 
using Microsoft.Azure; // Namespace for CloudConfigurationManager 
using Microsoft.WindowsAzure.Storage; // Namespace for CloudStorageAccount 
using Microsoft.WindowsAzure.Storage.Queue; // Namespace for Queue storage types 
namespace TestReader 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
       CloudConfigurationManager.GetSetting("StorageConnectionString")); 
      string connectionString = 
        CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); 
      var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString); 

      if (!namespaceManager.TopicExists("TestTopic")) 
      { 
       namespaceManager.CreateTopic("TestTopic"); 
      } 
      if (!namespaceManager.SubscriptionExists("TestTopic", "AllMessages")) 
      { 
       namespaceManager.CreateSubscription("TestTopic", "AllMessages"); 
      } 

      ; 
      SubscriptionClient subClient = SubscriptionClient.CreateFromConnectionString 
               (connectionString, "TestTopic", "AllMessages"); 

      subClient.OnMessage(message => 
      { 
       Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>())); 
       Console.WriteLine(String.Format("Message id: {0}", message.MessageId)); 
      }); 
      Console.WriteLine("Press [Enter] to Exit"); 
      Console.ReadLine(); 
     } 
    } 
} 

そして、ここで出版社です:

using Microsoft.ServiceBus; 
using Microsoft.ServiceBus.Messaging; 
using System; 
using Microsoft.Azure; // Namespace for CloudConfigurationManager 
using Microsoft.WindowsAzure.Storage; // Namespace for CloudStorageAccount 

namespace TestWriter 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     {   
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
        CloudConfigurationManager.GetSetting("StorageConnectionString")); 
      string connectionString = 
        CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString"); 
      var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString); 
      if (!namespaceManager.TopicExists("TestTopic")) 
      { 
       namespaceManager.CreateTopic("TestTopic"); 
      } 

      TopicClient topicClient = 
       TopicClient.CreateFromConnectionString(connectionString, "TestTopic"); 
      SubscriptionClient subClient = SubscriptionClient.CreateFromConnectionString 
      (connectionString, "TestTopic", "AvailableMsgs"); 

      Console.WriteLine("Please press 'S' to send 'X' to Exit"); 
      char s = 'S'; 
      do 
      { 
       s = Console.ReadKey().KeyChar; 
       if (s == 'S') 
       { 
        var message = new BrokeredMessage("This is a test message!"); 
        topicClient.Send(message); 
        Console.WriteLine("==>Sent"); 
       } 
      } while (s == 'S'); 
     } 
    } 
} 

答えて

0

あなたが複数のサブスクリプション、各消費者のための1つを持っている必要があります。 1つのサブスクリプションがキューのように動作し、1つのコンシューマが各メッセージを受信できるようにします。

関連する問題