Подписка на тему AppFabric - PullRequest
2 голосов
/ 26 июня 2011

Я пытаюсь собрать простую тему AppFabric, посредством которой сообщения отправляются и принимаются с использованием SessionId. Код не прерывается, но 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

1 Ответ

3 голосов
/ 30 июня 2011

У вас две проблемы в вашем коде:

  1. Вы создаете подписку ПОСЛЕ , отправляющую сообщение.Вам необходимо создать подписку перед отправкой, потому что подписка говорит теме, в некотором смысле, скопировать сообщение в несколько разных «корзин».

  2. Вы используете TryReceive, но выне проверяя его результат.Он возвращает истину, если сообщение было получено, и ложь, если нет (например, истекло время ожидания).

Я пишу пример приложения и сегодня опубликую его в нашем блоге.Я также опубликую ссылку здесь.Но до тех пор переместите логику подписки на до отправки сообщения, а получателя после него, и вы начнете видеть результаты.

Обновление: Как и было обещано, вот ссылка на мой блогсообщение на начало работы с очередями, темами, подписками AppFabric.

...