我正嘗試使用Azure服務總線將消息從Web角色廣播到單個輔助角色的所有實例。這是我用來接收消息的代碼:將Azure服務總線廣播到所有工作者角色實例
// Create the topic if it does not exist already
string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
// Configure Topic Settings
TopicDescription td = new TopicDescription("CommandTopic");
td.MaxSizeInMegabytes = 5120;
td.DefaultMessageTimeToLive = new TimeSpan(0, 0, 1);
if (!namespaceManager.TopicExists("CommandTopic"))
{
namespaceManager.CreateTopic(td);
}
Random rand = new Random();
double randNum = rand.Next();
if (!namespaceManager.SubscriptionExists("CommandTopic", "CommandSubscription"+randNum))
{
namespaceManager.CreateSubscription("CommandTopic", "CommandSubscription" + randNum);
}
Client = SubscriptionClient.CreateFromConnectionString(connectionString, "CommandTopic", "CommandSubscription" + randNum, ReceiveMode.ReceiveAndDelete);
Trace.WriteLine("SUBSCRIPTION: COMMANDSUBSCRIPTION"+randNum);
爲了創建每個工人角色實例單獨訂購(使所有實例收到的主題中的消息),我不得不使用一個隨機數。有沒有使用實例的一些Id而不是隨機數的方法。有Instance.Id,但它被用作訂閱名稱的參數太長。有沒有使用子字符串的較短版本?另外,是爲每個實例創建一個單獨的訂閱適當的方法?之前所有實例都訂閱了相同的訂閱,因此只有一個實例獲取消息並從訂閱中刪除它。
我認爲你誤解了我一點,當我說不同的訂閱時,我並不是指不同的Azure訂閱,而是訂閱了主題http://www.windowsazure.com/en-us/develop/net /如何對導遊/服務總線的主題/。 internalEndpoint提示雖然工作,實例的列表正在填充正確:) – Matt 2013-03-13 07:56:56