Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何基于BrokeredMessage类的内置属性筛选ServiceBus主题订阅?_C#_Azure_Publish Subscribe_Servicebus - Fatal编程技术网

C# 如何基于BrokeredMessage类的内置属性筛选ServiceBus主题订阅?

C# 如何基于BrokeredMessage类的内置属性筛选ServiceBus主题订阅?,c#,azure,publish-subscribe,servicebus,C#,Azure,Publish Subscribe,Servicebus,使用2012年6月的Azure SDK,我有一个服务总线主题,我正在向它添加订阅 我想筛选该订阅。如果我是根据我添加到BrokeredMessage属性包中的一个项目来执行此操作的,那么这可以正常工作: // Send the message: BrokeredMessage message = new BrokeredMessage(serializableObject); message.Properties.Add("MySessionId", "GUID"); getTopicClien

使用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)


这可能吗?

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

请参见此处的语法描述;查找“范围”