我尝试按照Mark Heath的控制台应用程序example使用过滤后的订阅来检索Service Bus主题消息。但是,我实际上无法检索实际过滤的消息(Filtered1,Filtered2)。消息确实被消耗了,但是我无法查看它们,因为代码永远不会像使用非过滤消息(AllMessages)那样进入回调函数。关于我失踪的任何想法?
发件人代码
@RequestMapping(
path = "${airport.service.path}"
)
接收者代码
var body = "Hello World";
var message1 = new BrokeredMessage(body);
message1.Properties["From"] = "Ian Wright";
var message2 = new BrokeredMessage("Second message");
message2.Properties["From"] = "Alan Smith";
message2.Label = "important";
var message3 = new BrokeredMessage("Third message");
message3.Properties["From"] = "Kelly Smith";
message3.Label = "information";
var client = TopicClient.CreateFromConnectionString(servicebusConnectionString, topicName);
client.Send(message1);
client.Send(message2);
client.Send(message3);
答案 0 :(得分:0)
代码很好。运行此示例后AllMessages
包含三条消息,Filtered1
有两条消息,Filtered2
有一条消息。您确定没有其他正在使用代码的实例正在运行并检索这些消息吗?
AllMessages
有一个默认的SQL过滤器,所以它是一个" catch-all"订阅。过滤不会影响它,它应该将任何消息发送到rightangle
主题。如果您看不到任何消息,则消耗任何消息,或者应用程序重新构建实体,从而删除所有消息。
尝试更改接收器代码,不要删除实体,只能接收。并修改发件人以确保实体存在,如果没有创建实体,但不删除。或者,您可以将两者(首先是Receiver代码然后是发件人)联合起来,然后您就会看到这些消息。问题仅限于如何管理(删除)实体。