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