2012-08-28 17 views
11

Korzystając z pakietu Azure SDK z czerwca 2012 r., Mam temat usługi magistrali usług i dodawam do niego subskrypcję.Jak filtrować subskrypcję tematu ServiceBus na podstawie wbudowanej właściwości klasy BrokeredMessage?

Chcę odfiltrować tę subskrypcję. Jeśli mogę to zrobić w oparciu o jeden z elementów, które zostały dodane do worka BrokeredMessage Właściwości, a następnie to działa prawidłowo:

// 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(); 

Jeśli jednak zrobić to samo, ale dodać wartość filtra do jednego z bezpośrednie właściwości obiektu BrokeredMessage, takie jak sessionid, to się nie powiedzie:

// 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(); 

Jak można skonstruować SqlFilter że zajmie się

wbudowanej właściwości obiektu BrokeredMessage (sessionid lub ReplyToSessionId lub komunikatu?

Czy to jest możliwe?

Odpowiedz

18

Wyrażenia właściwości w filtrach SQL mają przedrostki określające zakres. Zwykle ich nie widzisz, ponieważ domyślnie jest to "użytkownik". dla właściwości zdefiniowanych przez użytkownika. Możesz uzyskać dostęp do właściwości systemu, dodając przedrostek "sys".

Zobacz opis składni tutaj; poszukaj "zakresu" http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.sqlfilter.sqlexpression.aspx

+0

Dokładnie tego, czego szukałem. Wielkie dzięki! – JcFx