Используя июньский 2012 Azure SDK, у меня есть тема служебной шины, и я добавляю к нему подписку.
Я хочу отфильтровать эту подписку. Если я сделаю это на основе одного из элементов, которые я добавил в пакет BrokeredMessage Properties, то это прекрасно работает:
// Send the message:
BrokeredMessage message = new BrokeredMessage(serializableObject);
message.Properties.Add("MySessionId", "GUID");
getTopicClient("MY_TOPIC").Send(message); // method creates client. omitted here.
// Retrieve it:
SqlFilter myFilter = new SqlFilter(@"(MySessionId = ""GUID"")");
namespaceManager.CreateSubscription("MY_TOPIC", "MY_SUB", myFilter);
SubscriptionClient client = getSubscriptionClient("MY_TOPIC", "MY_SUB"); // method creates client. omitted here.
// This will work fine:
Message newMessage = client.Receive();
Если, однако, я делаю то же самое, но добавляю значение фильтра к одному из прямых свойств объекта BrokeredMessage, например SessionId, тогда это не удается:
// Send the message:
BrokeredMessage message = new BrokeredMessage(serializableObject);
message.SessionId = "GUID";
getTopicClient("MY_TOPIC").Send(message); // method creates client. omitted here.
// Retrieve it:
SqlFilter myFilter = new SqlFilter(@"(SessionId = ""GUID"")");
namespaceManager.CreateSubscription("MY_TOPIC", "MY_SUB", myFilter);
SubscriptionClient client = getSubscriptionClient("MY_TOPIC", "MY_SUB"); // method creates client. omitted here.
// This will never receive a message
Message newMessage = client.Receive();
Как я могу построить SqlFilter, который будет обращаться к встроенным свойствам объекта BrokeredMessage (SessionId, или ReplyToSessionId или MessageId?
Возможно ли это?