0
我正在嘗試爲許多訂閱者原型創建一個發佈者。Azure Pub/Sub幾乎可以工作
訂戶正在可靠地接收消息;直到我實例化第二個用戶。在這種情況下,每個用戶輪流接收預訂,而另一個用戶實例不接收消息。希望看到每個客戶端收到每條消息後都會發布消息。
這是用戶。
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');
}
}
}