3

I'm trying to configure Azure ServiceBus Topic Subscription dynamically(using C#) with all of its properties which we can set up using Azure Portal.

I have tried the below code, but it's giving me an "object reference error" for SubscriptionProperties while setting up its values.

    static SubscriptionProperties subscriptionProperties;
    static async Task Main(string[] args)
    {
        adminClient = new ServiceBusAdministrationClient(connectionString);
        client = new ServiceBusClient(connectionString);
        

        subscriptionProperties.AutoDeleteOnIdle = TimeSpan.FromDays(14);
        subscriptionProperties.DefaultMessageTimeToLive = TimeSpan.FromDays(14);
        subscriptionProperties.TopicName = topicName;
        subscriptionProperties.SubscriptionName = subscriptionName;
        subscriptionProperties.MaxDeliveryCount = 3;
        subscriptionProperties.LockDuration = TimeSpan.FromSeconds(5.00);
        subscriptionProperties.DeadLetteringOnMessageExpiration = true;
        subscriptionProperties.EnableDeadLetteringOnFilterEvaluationExceptions = true;

        Console.WriteLine($"Creating the subscription {subscriptionName} with a correlation filter");
        
        if (!await adminClient.SubscriptionExistsAsync(topicName, subscriptionName))
        {
            await adminClient.CreateSubscriptionAsync(
                    new CreateSubscriptionOptions(subscriptionProperties),
                    new CreateRuleOptions(subscriptionFilterName, new CorrelationRuleFilter() { Subject = correlationFilterValue }));

        }
}

Let me know if this is the correct way of setting the property values for "SubscriptionProperties" class or how can I do so?

Aryan
  • 374
  • 1
  • 2
  • 14

1 Answers1

0

I was able to fix this issue by following this link https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/servicebus/Azure.Messaging.ServiceBus/samples/Sample07_CrudOperations.md#create-a-topic-and-subscription

var client = new ServiceBusAdministrationClient(connectionString);
    string subscriptionName = "<subscription_name>";
    var subscriptionOptions = new CreateSubscriptionOptions(topicName, subscriptionName)
    {
        AutoDeleteOnIdle = TimeSpan.FromDays(7),
        DefaultMessageTimeToLive = TimeSpan.FromDays(2),
        EnableBatchedOperations = true,
        UserMetadata = "some metadata"
    };
    SubscriptionProperties createdSubscription = await client.CreateSubscriptionAsync(subscriptionOptions);

This might be helpful for other readers as well as having similar doubuts.

Aryan
  • 374
  • 1
  • 2
  • 14