基本上我的'Maintopic'主题收到三种类型的xml文件('TEST','DEV','PROD')。
'MainSubscription'订阅该主题,现在基于XML文件类型,我需要将XML文件路由到:
各个主题(儿童主题)。
请参阅以下消息流。
<select name = "field_name">
<option value="<?php echo $_GET["field_name"]; ?>" selected > <?php echo
$_GET["field_name"]; ?> </option>
{
//you can add your dropdown condition here if you are fetching an array
}
</select>
我可以添加对'Maintopic'的订阅,但是我可以在哪里定义用于路由文件的所有过滤器逻辑?
我是Azure云的新手,我该怎么做?我甚至不知道从哪里开始。
答案 0 :(得分:0)
Service Bus支持三种过滤条件:
过滤器可以基于BrokeredMessage的任何属性,除了正文之外,因为这将要求每个消息被消毒以便传递给正确的订阅。你可以使用sql过滤器。 sql过滤器的一个例子如下 -
if (!namespaceManager.SubscriptionExists(topicName, filteredSubName1))
{
namespaceManager.CreateSubscription(topicName, filteredSubName1, new SqlFilter("From LIKE '%Smith'"));
}
您不会将消息直接发送到订阅,而是将其发送到主题,并根据其过滤器将其转发给所有相关订阅。以下是示例 -
var message1 = new BrokeredMessage("Second message");
message1.Properties["From"] = "Alan Smith";
var client = TopicClient.CreateFromConnectionString(connectionString, topicName);
client.Send(message1);
以下是您收到消息的方式 -
var subClient = SubscriptionClient.CreateFromConnectionString(connectionString, topicName, subscriptionName);
var received = subClient.ReceiveBatch(10, TimeSpan.FromSeconds(5));
foreach (var message in received)
{
Console.WriteLine("{0} '{1}' Label: '{2}' From: '{3}'",
subscriptionName,
message.GetBody<string>(),
message.Label,
message.Properties["From"]);
}