使用筛选的订阅从Topic检索Azure Service Bus消息

时间:2018-02-02 17:17:53

标签: azure azureservicebus azure-servicebus-topics

我尝试按照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);

1 个答案:

答案 0 :(得分:0)

代码很好。运行此示例后AllMessages包含三条消息,Filtered1有两条消息,Filtered2有一条消息。您确定没有其他正在使用代码的实例正在运行并检索这些消息吗?

AllMessages有一个默认的SQL过滤器,所以它是一个" catch-all"订阅。过滤不会影响它,它应该将任何消息发送到rightangle主题。如果您看不到任何消息,则消耗任何消息,或者应用程序重新构建实体,从而删除所有消息。

尝试更改接收器代码,不要删除实体,只能接收。并修改发件人以确保实体存在,如果没有创建实体,但不删除。或者,您可以将两者(首先是Receiver代码然后是发件人)联合起来,然后您就会看到这些消息。问题仅限于如何管理(删除)实体。