gpt4 book ai didi

c# - 基于 Azure 服务总线订阅中的系统属性的 SQLFilter

转载 作者:太空狗 更新时间:2023-10-30 00:13:56 25 4
gpt4 key购买 nike

我正在设置主题/订阅服务,并且需要有关 SQLFilter 语法的帮助,以便我可以访问 BrokeredMessage 属性,特别是 To 属性。 SQL 过滤器访问消息系统属性的正确语法是什么?

我有一个使用本教程的工作示例,我可以根据需要发送和接收我的主题/订阅:https://azure.microsoft.com/en-us/documentation/articles/service-bus-queues-topics-subscriptions/

但是,现在我想根据 BrokeredMessage 的 To 属性为每个订阅设置 SQL 过滤器。我遵循的教程提到,“创建订阅时,您可以提供一个对消息属性进行操作的过滤器表达式,包括系统属性(例如,标签)和自定义应用程序属性(例如,StoreName) .)"

如果我设置自定义属性,例如商店名称,如下所示:

message.Properties.Add("StoreName", "TestMe");

并使用 SQL 过滤器设置订阅,如下所示:

namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("StoreName = 'TestMe'"));

订阅按预期进行筛选。但是,如果我尝试按照文章中所述使用 BrokeredMessage 对象 To 属性(或就此而言的标签),我将无法使其正常工作。我尝试过以下 SQL 过滤器,但没有成功。访问消息的系统属性的正确语法是什么?

BrokeredMessage message = new BrokeredMessage();
message.To = "TestMe";

namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("To = 'TestMe'"));
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("Message.To= 'TestMe'"));
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("MessageTo= 'TestMe'"));
namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription", new SqlFilter("messageto= 'TestMe'"));

最佳答案

摘自这篇文章Topic Subscription Filters :

SQL Filters - A SqlFilter holds a SQL-like condition expression that is evaluated in the broker against the arriving messages' user-defined properties and system properties. All system properties (which are all properties explicitly listed on the BrokeredMessage class) must be prefixed with sys. in the condition expression. The SQL subset implements testing for existence of properties (EXISTS), testing for null-values (IS NULL), logical NOT/AND/OR, relational operators, numeric arithmetic, and simple text pattern matching with LIKE.

因此,在您的情况下,您需要在 sys.To 属性上创建一个 SqlFilter:

namespaceManager.CreateSubscription("MyNSTestTopic", "TestSubscription",
new SqlFilter("sys.To = 'TestMe'"));

关于c# - 基于 Azure 服务总线订阅中的系统属性的 SQLFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com