internal async Task AddRule(SBSubscription subscription, string newTopic, CancellationToken token) { _logger.LogInformation("adding rule for {topic} to subscription {subscription}", newTopic, subscription.Name); var creds = await GetCredentialsAsync(token).ConfigureAwait(false); var client = new ServiceBusManagementClient(creds) { SubscriptionId = _options.SubscriptionId, }; var filter = new Microsoft.Azure.Management.ServiceBus.Models.SqlFilter( $"sys.Label='{newTopic}' AND From <> '{subscription.Name}'" ); var rule = new Rule(); rule.SqlFilter = filter; await client.Rules.CreateOrUpdateAsync( resourceGroupName : _options.ResourceGroup, namespaceName : _options.Namespace, topicName : _options.Topic, subscriptionName : subscription.Name, ruleName : newTopic, parameters : rule, cancellationToken : token ).ConfigureAwait(false); _logger.LogInformation("rule for {topic} added to subscription {subscription}", newTopic, subscription.Name); }
/// <summary> /// Initializes a new instance of the Rule class. /// </summary> /// <param name="id">Resource Id</param> /// <param name="name">Resource name</param> /// <param name="type">Resource type</param> /// <param name="action">Represents the filter actions which are /// allowed for the transformation of a message that have been matched /// by a filter expression.</param> /// <param name="filterType">Filter type that is evaluated against a /// BrokeredMessage. Possible values include: 'SqlFilter', /// 'CorrelationFilter'</param> /// <param name="sqlFilter">Properties of sqlFilter</param> /// <param name="correlationFilter">Properties of /// correlationFilter</param> public Rule(string id = default(string), string name = default(string), string type = default(string), Action action = default(Action), FilterType?filterType = default(FilterType?), SqlFilter sqlFilter = default(SqlFilter), CorrelationFilter correlationFilter = default(CorrelationFilter)) : base(id, name, type) { Action = action; FilterType = filterType; SqlFilter = sqlFilter; CorrelationFilter = correlationFilter; CustomInit(); }