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');
}
}
}