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);
        }
예제 #2
0
 /// <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();
 }