【问题标题】:How to filter a ServiceBus topic subscription based on a built-in property of the BrokeredMessage class?如何根据 BrokeredMessage 类的内置属性过滤 ServiceBus 主题订阅?
【发布时间】:2012-08-28 15:32:56
【问题描述】:

使用 2012 年 6 月的 Azure SDK,我有一个服务总线主题,我正在为其添加订阅。

我想过滤那个订阅。如果我根据已添加到 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 对象的直接属性之一,例如 SessionId,那么此操作将失败:

// 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 来处理 BrokeredMessage 对象的内置属性(SessionId、ReplyToSessionId 或 MessageId?

这可能吗?

【问题讨论】:

    标签: c# azure publish-subscribe servicebus


    【解决方案1】:

    SQL 过滤器中的属性表达式实际上具有范围前缀。您通常看不到它们,因为默认值为“用户”。对于用户定义的属性。您可以通过前缀“sys”来获取系统属性。

    请参见此处的语法说明;寻找“范围”http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.sqlfilter.sqlexpression.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多