2012-08-28 32 views
11

使用2012年6月的Azure SDK,我有一個服務總線主題,並且正在爲其添加訂閱。如何根據BrokeredMessage類的內置屬性過濾ServiceBus主題訂閱?

我想過濾該訂閱。如果我這樣做是基於我已經加入到BrokeredMessage屬性袋的項目之一,那麼這工作得很好:

// 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對象的直接屬性,如會話ID,那麼這個失敗:

// 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,將解決內置(的SessionID,或ReplyToSessionId,或的MessageId的BrokeredMessage對象的屬性

這可能嗎?

回答