2012-06-13 61 views
0

我嘗試按照給定的教程1。我使用sqlFilter(user_age < 50)和(user_age> = 50)分別創建了兩個主題的主題。我有一個自定義屬性user_age定義的消息。 但是,當我發送有關該主題的消息時,兩個訂閱都會收到相同的消息,這是無稽之談! 有什麼想法?主題上的服務總線訂閱不適用過濾器

我的代碼是從政黨成員給出的一個充分激發,在我使用此代碼從一個訂閱接收消息的異常:

resultQM = service.receiveSubscriptionMessage("MyTopic", subName, opts); 
+0

你能張貼代碼哪裏你創建了2個訂閱? –

+0

這是一個訂閱的代碼,另一個是類似的我已經減少了空間...謝謝;) '訂閱信息subInfo1 =新訂閱信息(「High_Ages」); CreateSubscriptionResult result1 = serviceBusContract.createSubscription(topicName,subInfo1); ruleInfo1 = ruleInfo1.withSqlExpressionFilter(「user_age> = 50」); CreateRuleResult ruleResult = serviceBusContract.createRule(topicName,「High_Ages」,ruleInfo1);' – orleant

+0

此代碼看起來不錯。你還可以發佈你用來創建發送消息的代碼嗎? –

回答

0

該教程中的代碼不能正常工作。下面是我用來創建兩個訂閱的Java代碼(LowMessages和HighMessages),它們實際上會篩選用戶定義的定製屬性「MessageNumber」的值。我發現這個作品。請注意,你需要明確給出ruleInfo名稱(「RULENAME」),你還需要明確刪除訂閱的默認「AllMatch」規則(或你沒有過濾。)

SubscriptionInfo subInfo = new SubscriptionInfo("LowMessages"); 
    CreateSubscriptionResult result = service.createSubscription("TestTopic", subInfo); 
    RuleInfo ruleInfo = new RuleInfo("RULENAME"); 
    ruleInfo = ruleInfo.withSqlExpressionFilter("MessageNumber <= 3"); 
    CreateRuleResult ruleResult = service.createRule("TestTopic", "LowMessages", ruleInfo); 
    service.deleteRule("TestTopic", "LowMessages", "$Default"); 

    SubscriptionInfo subInfo2 = new SubscriptionInfo("HighMessages"); 
    CreateSubscriptionResult result2 = service.createSubscription("TestTopic", subInfo2); 
    RuleInfo ruleInfo2 = new RuleInfo("RULENAME2"); 
    ruleInfo2 = ruleInfo2.withSqlExpressionFilter("MessageNumber > 3"); 
    CreateRuleResult ruleResult2 = service.createRule("TestTopic", "HighMessages", ruleInfo2); 
    service.deleteRule("TestTopic", "HighMessages", "$Default"); 
相關問題