Ich versuche, einen One Publisher zu vielen Abonnenten Prototyp zu erstellen.Azure Pub/Sub Fast funktioniert
Der Abonnent empfängt die Nachricht zuverlässig; bis ich einen zweiten Abonnenten instanziiere. In diesem Fall wechselt jeder Abonnent beim Empfang des Abonnements eine Abbiegung, und die andere Abonnenteninstanz erhält keine Nachricht. Möchte man sehen, dass jeder Kunde jedes Ticket erhält, wird eine Nachricht veröffentlicht.
Hier ist der Abonnent.
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();
}
}
}
Und hier ist der Verlag:
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');
}
}
}