Class ServiceBusRuleManagerAsyncClient

java.lang.Object
com.azure.messaging.servicebus.ServiceBusRuleManagerAsyncClient
All Implemented Interfaces:
AutoCloseable

public class ServiceBusRuleManagerAsyncClient extends Object implements AutoCloseable
An asynchronous rule manager responsible for managing rules for a specific topic subscription. The rule manager requires only Listen claims, whereas the ServiceBusAdministrationAsyncClient requires Manage claims.

Create an instance of rule manager

 // The required parameters is connectionString, a way to authenticate with Service Bus using credentials.
 // The connectionString/queueName must be set by the application. The 'connectionString' format is shown below.
 // "Endpoint={fully-qualified-namespace};SharedAccessKeyName={policy-name};SharedAccessKey={key}"
 TokenCredential credential = new DefaultAzureCredentialBuilder().build();

 // 'fullyQualifiedNamespace' will look similar to "{your-namespace}.servicebus.windows.net"
 ServiceBusRuleManagerAsyncClient ruleManager = new ServiceBusClientBuilder()
     .credential(fullyQualifiedNamespace, credential)
     .ruleManager()
     .topicName(topicName)
     .subscriptionName(subscriptionName)
     .buildAsyncClient();
 

Create a rule to a Service Bus subscription

 RuleFilter trueRuleFilter = new TrueRuleFilter();
 CreateRuleOptions options = new CreateRuleOptions(trueRuleFilter);

 // `subscribe` is a non-blocking call. After setting up the create rule operation, it will move onto the next
 // line of code to execute.
 // Consider using Mono.usingWhen to scope the creation, usage, and cleanup of the rule manager.
 ruleManager.createRule("new-rule", options).subscribe(
     unused -> {
     },
     err -> System.err.println("Error occurred when create a rule, err: " + err),
     () -> System.out.println("Create complete.")
 );

 // Finally dispose of the rule manager when done using it.
 ruleManager.close();
 

Fetch all rules.

 // `subscribe` is a non-blocking call. After setting up the list rules operation, it will move onto the next
 // line of code to execute.
 ruleManager.listRules().subscribe(ruleProperties -> System.out.println(ruleProperties.getName()));
 

Delete a rule.

 // `subscribe` is a non-blocking call. After setting up the delete rule operation, it will move onto the next
 // line of code to execute.
 ruleManager.deleteRule("exist-rule").subscribe(
     unused -> { },
     err -> System.err.println("Error occurred when delete rule, err: " + err),
     () -> System.out.println("Delete complete.")
 );
 
See Also:
  • Method Details

    • getFullyQualifiedNamespace

      public String getFullyQualifiedNamespace()
      Gets the fully qualified namespace.
      Returns:
      The fully qualified namespace.
    • getEntityPath

      public String getEntityPath()
      Gets the name of the Service Bus resource.
      Returns:
      The name of the Service Bus resource.
    • createRule

      public Mono<Void> createRule(String ruleName, CreateRuleOptions options)
      Creates a rule to the current subscription to filter the messages reaching from topic to the subscription.
      Parameters:
      ruleName - Name of rule.
      options - The options for the rule to add.
      Returns:
      A Mono that completes when the rule is created.
      Throws:
      NullPointerException - if options, ruleName is null.
      IllegalStateException - if client is disposed.
      IllegalArgumentException - if ruleName is empty string, action of options is not null and not instanceof SqlRuleAction, filter of options is not instanceof SqlRuleFilter or CorrelationRuleFilter.
      ServiceBusException - if filter matches ruleName is already created in subscription.
    • listRules

      public Flux<RuleProperties> listRules()
      Fetches all rules associated with the topic and subscription.
      Returns:
      A list of rules associated with the topic and subscription.
      Throws:
      IllegalStateException - if client is disposed.
      UnsupportedOperationException - if client cannot support filter with descriptor in message body.
    • deleteRule

      public Mono<Void> deleteRule(String ruleName)
      Removes the rule on the subscription identified by ruleName.
      Parameters:
      ruleName - Name of rule to delete.
      Returns:
      A Mono that completes when the rule is deleted.
      Throws:
      NullPointerException - if ruleName is null.
      IllegalStateException - if client is disposed.
      IllegalArgumentException - if ruleName is empty string.
      ServiceBusException - if cannot find filter matches ruleName in subscription.
    • close

      public void close()
      Disposes of the ServiceBusRuleManagerAsyncClient. If the client has a dedicated connection, the underlying connection is also closed.
      Specified by:
      close in interface AutoCloseable