Azure 主题为don'的服务总线订阅;不要使用过滤器
我尝试按照给定的教程在。我创建了一个主题,其中包含两个主题订阅,分别使用sqlFilter(用户年龄<50)和(用户年龄>=50)。我为消息定义了自定义属性user\u age。 但是,当我发送有关该主题的消息时,两个订阅都会收到相同的消息,这是胡说八道! 有什么想法吗 我的代码完全受图图中给出的代码启发,但我使用此代码接收来自给定订阅的消息除外:Azure 主题为don'的服务总线订阅;不要使用过滤器,azure,azureservicebus,Azure,Azureservicebus,我尝试按照给定的教程在。我创建了一个主题,其中包含两个主题订阅,分别使用sqlFilter(用户年龄=50)。我为消息定义了自定义属性user\u age。 但是,当我发送有关该主题的消息时,两个订阅都会收到相同的消息,这是胡说八道! 有什么想法吗 我的代码完全受图图中给出的代码启发,但我使用此代码接收来自给定订阅的消息除外: resultQM = service.receiveSubscriptionMessage("MyTopic", subName, opts); 该教程中的代码无法正常
resultQM = service.receiveSubscriptionMessage("MyTopic", subName, opts);
该教程中的代码无法正常工作。下面是我用来创建两个订阅(LowMessages和HighMessages)的Java代码,它们实际上根据用户定义的自定义属性“MessageNumber”的值进行过滤。我发现这个有用。注意:您需要显式地为ruleInfo指定一个名称(“RULENAME”),并且还需要显式地删除订阅的默认“AllMatch”规则(或者不进行筛选)
SubscriptionInfo subInfo=新的SubscriptionInfo(“低消息”);
CreateSubscriptionResult=service.createSubscription(“TestTopic”,子信息);
RuleInfo RuleInfo=新的RuleInfo(“RULENAME”);
ruleInfo=ruleInfo.withSqlExpressionFilter(“MessageNumber 3”);
CreateRuleResult ruleResult2=service.createRule(“TestTopic”、“HighMessages”、ruleInfo2);
deleteRule(“TestTopic”、“HighMessages”、“$Default”);
您能在创建两个订阅的地方发布代码吗?这是一个订阅的代码,另一个类似,我已经减少了空间。。。谢谢;)<代码>订阅信息子信息1=新订阅信息(“高年龄”);CreateSubscriptionResult result1=serviceBusContract.createSubscription(主题名,子信息1);ruleInfo1=ruleInfo1.withSqlExpressionFilter(“用户年龄>=50”);CreateRuleResult ruleResult=serviceBusContract.createRule(主题名称,“高年龄”,ruleInfo1)代码>此代码看起来正常。你也可以发布你用来创建发送消息的代码吗?这是发送消息的代码<代码>代理消息消息=新代理消息(正文);message.setProperty(“name”,name);message.setProperty(“user_age”,Integer.parseInt(age));双ttl=86400;message.setTimeToLive(ttl);serviceBusContract.sendTopicMessage(主题,消息)代码>名称和年龄值通过html表单提交。是否可以删除Integer.parseInt部分?只需有:message.setProperty(“用户年龄”,年龄)代码>
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");