2

SessionIdを使用してメッセージを送受信する単純なAppFabricトピックを組み立てようとしています。コードは中止されませんが、brokeredMessageは常にnullです。コードは次のとおりです。

// BTW, the topic already exists

var messagingFactory = MessagingFactory.Create(uri, credentials);
var topicClient = messagingFactory.CreateTopicClient(topicName);
var sender = topicClient.CreateSender();
var message = BrokeredMessage.CreateMessage("Top of the day!");
message.SessionId = "1";
sender.Send(message);

var subscription = topic.AddSubscription("1", new SubscriptionDescription { RequiresSession = true});
var mikeSubscriptionClient =  messagingFactory.CreateSubscriptionClient(subscription);
var receiver = mikeSubscriptionClient.AcceptSessionReceiver("1");
BrokeredMessage brokeredMessage;
receiver.TryReceive(TimeSpan.FromMinutes(1), out brokeredMessage); // brokeredMessage always null
4

1 に答える 1

3

コードには2つの問題があります。

  1. メッセージを送信した後にサブスクリプションを作成します。サブスクリプションは、ある意味でメッセージをいくつかの異なる「バケット」にコピーするようにトピックに指示するため、送信する前にサブスクリプションを作成する必要があります。

  2. TryReceiveを使用していますが、結果を確認していません。メッセージが受信された場合はtrueを返し、受信されなかった場合はfalseを返します(たとえば、タイムアウトが発生しました)。

サンプルアプリケーションを作成しており、本日ブログに投稿します。こちらにもリンクを掲載します。ただし、それまでは、サブスクリプションロジックをに移動してからメッセージを送信し、その後に受信者を移動すると、結果が表示されるようになります。

更新:約束どおり、 AppFabricキュー、トピック、サブスクリプションの使用を開始 するためのブログ投稿へのリンクは次のとおりです。

于 2011-06-30T07:54:44.483 に答える