3

Azure Service Busを使用して、Webロールから単一のワーカーロールのすべてのインスタンスにメッセージをブロードキャストしようとしています。これは私がメッセージを受信するために使用するコードです:

// 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がありますが、サブスクリプション名のパラメーターとして使用するには長すぎます。サブストリングを使用しない短いバージョンはありますか?また、インスタンスごとに個別のサブスクリプションを作成することは適切なアプローチですか?以前は、すべてのインスタンスが同じサブスクリプションにサブスクライブしていたため、1つのインスタンスのみがメッセージを取得してサブスクリプションから削除していました。

4

2 に答える 2

0

ワーカーロールの偽のInternalEndpointを構成に追加してみてください。これにより、ロールのインスタンスのリストが確実に入力されます。

于 2013-03-13T07:03:12.700 に答える
0

次のリンクを見つけてください。役割間の相互コミュニケーションを行うのに役立つことを願っています。

http://msdn.microsoft.com/en-us/library/windowsazure/hh180158.aspx

また、次のリンクをご覧ください。まさにあなたが探しているものがあると思います: http://windowsazurecat.com/2011/08/how-to-simplify-scale-inter-role-communication-using- windows-azure-service-bus/

あなたが話していることは、ロールが他のいくつかのロールと通信できる次のリンクのシナリオ 4 のようなものだと思います。あなたが要求したことが可能かどうかはわかりませんが、Service Bus Queue を使用して Windows Azure のワーカー ロールを使用してみてください。

于 2013-04-05T22:30:03.250 に答える