public async Task GetUpdateDeleteTopicAndSubscription()
        {
            string topicName           = Guid.NewGuid().ToString("D").Substring(0, 8);
            string subscriptionName    = Guid.NewGuid().ToString("D").Substring(0, 8);
            string connectionString    = TestEnvironment.ServiceBusConnectionString;
            var    client              = new ServiceBusAdministrationClient(connectionString);
            var    topicOptions        = new CreateTopicOptions(topicName);
            var    subscriptionOptions = new CreateSubscriptionOptions(topicName, subscriptionName);
            await client.CreateTopicAsync(topicOptions);

            await client.CreateSubscriptionAsync(subscriptionOptions);

            #region Snippet:GetTopic
            TopicProperties topic = await client.GetTopicAsync(topicName);

            #endregion
            #region Snippet:GetSubscription
            SubscriptionProperties subscription = await client.GetSubscriptionAsync(topicName, subscriptionName);

            #endregion
            #region Snippet:UpdateTopic
            topic.UserMetadata = "some metadata";
            TopicProperties updatedTopic = await client.UpdateTopicAsync(topic);

            #endregion
            Assert.AreEqual("some metadata", updatedTopic.UserMetadata);

            #region Snippet:UpdateSubscription
            subscription.UserMetadata = "some metadata";
            SubscriptionProperties updatedSubscription = await client.UpdateSubscriptionAsync(subscription);

            #endregion
            Assert.AreEqual("some metadata", updatedSubscription.UserMetadata);

            // need to delete the subscription before the topic, as deleting
            // the topic would automatically delete the subscription
            #region Snippet:DeleteSubscription
            await client.DeleteSubscriptionAsync(topicName, subscriptionName);

            #endregion
            Assert.That(
                async() =>
                await client.GetSubscriptionAsync(topicName, subscriptionName),
                Throws.InstanceOf <ServiceBusException>().And.Property(nameof(ServiceBusException.Reason)).EqualTo(ServiceBusFailureReason.MessagingEntityNotFound));

            #region Snippet:DeleteTopic
            await client.DeleteTopicAsync(topicName);

            #endregion
            Assert.That(
                async() =>
                await client.GetTopicAsync(topicName),
                Throws.InstanceOf <ServiceBusException>().And.Property(nameof(ServiceBusException.Reason)).EqualTo(ServiceBusFailureReason.MessagingEntityNotFound));
        }
Beispiel #2
0
        public async Task <bool> CheckHealthAsync()
        {
            try
            {
                var subscription = await _serviceBusAdminClient.GetSubscriptionAsync(_createSubscriptionOptions.TopicName,
                                                                                     _createSubscriptionOptions.SubscriptionName);

                return(subscription.Value != null);
            }
            catch
            {
                return(false);
            }
        }
        protected async Task CreateSubscriptionAsync(string subscription)
        {
            SubscriptionProperties existingSubscription = null;

            try
            {
                existingSubscription = await _serviceBusAdminClient.GetSubscriptionAsync(_topic, subscription);
            }
            catch {}

            if (existingSubscription is null)
            {
                await _serviceBusAdminClient.CreateSubscriptionAsync(_topic, subscription);
            }
        }
Beispiel #4
0
 public static async Task <SubscriptionProperties> GetSubscriptionAsync(string topicName, string connectionString, string subscriptionName)
 {
     try
     {
         var client = new ServiceBusAdministrationClient(connectionString);
         return(await client.GetSubscriptionAsync(topicName, subscriptionName));
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
 /// <summary>
 /// Get a Subscription.
 /// </summary>
 /// <param name="topicName">The name of the Topic.</param>
 /// <param name="subscriptionName">The name of the Subscription.</param>
 /// <param name="cancellationToken">The Cancellation Token.</param>
 public async Task <SubscriptionProperties> GetSubscriptionAsync(string topicName, string subscriptionName,
                                                                 CancellationToken cancellationToken = default)
 {
     return(await _administrationClient.GetSubscriptionAsync(topicName, subscriptionName, cancellationToken));
 }