public void TopicSetup() { var namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value)); if (!namespaceManager.TopicExists(topicPath).Result) { namespaceManager.CreateTopic(new TopicDescription(topicPath)).Wait(); } if (!namespaceManager.TopicExists(hierarchyTopicPath).Result) { namespaceManager.CreateTopic(new TopicDescription(hierarchyTopicPath)).Wait(); } }
public async Task Should_be_able_to_update_an_existing_topic_with_new_property_values_without_failing_on_readonly_properties() { var namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value), AzureServiceBusConnectionString.Value); await namespaceManager.DeleteTopic("existingtopic2"); await namespaceManager.CreateTopic(new TopicDescription("existingtopic2") { MaxSizeInMegabytes = SizeInMegabytes.Size2048, RequiresDuplicateDetection = true, EnablePartitioning = true }); var topicDescription = await namespaceManager.GetTopic("existingtopic2"); // partitioned topics will have a size that is 16x the requested max Assert.AreEqual(2048 * 16, topicDescription.MaxSizeInMegabytes); Assert.IsTrue(topicDescription.EnablePartitioning); Assert.IsTrue(topicDescription.RequiresDuplicateDetection); var topologyTopicSettings = new TopologyTopicSettings { MaxSizeInMegabytes = SizeInMegabytes.Size3072, RequiresDuplicateDetection = false, EnablePartitioning = false }; var creator = new AzureServiceBusTopicCreator(topologyTopicSettings); await creator.Create("existingtopic2", namespaceManager); topicDescription = await namespaceManager.GetTopic("existingtopic2"); Assert.AreEqual(3072 * 16, topicDescription.MaxSizeInMegabytes); Assert.IsTrue(topicDescription.EnablePartitioning); Assert.IsTrue(topicDescription.RequiresDuplicateDetection); }
public async Task Should_only_count_topics_following_bundle_pattern() { var bundlePrefix = $"bundle{DateTime.Now.Ticks}-"; nonBundledTopic = $"{bundlePrefix}x"; namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value), AzureServiceBusConnectionString.Value); try { await namespaceManager.CreateTopic(new TopicDescription(nonBundledTopic)); } catch (MessagingEntityAlreadyExistsException) { // ignore if topic already exists } var settings = new SettingsHolder(); var namespaceConfigurations = new NamespaceConfigurations(); var namespaceAlias = "namespace1"; namespaceConfigurations.Add(namespaceAlias, AzureServiceBusConnectionString.Value, NamespacePurpose.Routing); settings.Set(WellKnownConfigurationKeys.Topology.Addressing.Namespaces, namespaceConfigurations); var result = await NumberOfTopicsInBundleCheck.Run(new NamespaceManagerLifeCycleManagerInternal(new NamespaceManagerCreator(settings)), namespaceConfigurations, bundlePrefix); Assert.AreEqual(0, result.GetNumberOfTopicInBundle(namespaceAlias)); }
public async Task Should_be_able_to_update_an_existing_subscription_with_new_property_values_without_failing_on_readonly_properties() { var namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value), AzureServiceBusConnectionString.Value); await namespaceManager.CreateTopic(new TopicDescription("sometopic2")); await namespaceManager.CreateSubscription(new SubscriptionDescription("sometopic2", "existingsubscription2") { EnableDeadLetteringOnFilterEvaluationExceptions = true, RequiresSession = true, }, "1=1"); var settings = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer()); var extensions = new TransportExtensions <AzureServiceBusTransport>(settings); extensions.Subscriptions().DescriptionCustomizer(description => { description.EnableDeadLetteringOnFilterEvaluationExceptions = false; description.RequiresSession = false; }); var creator = new AzureServiceBusSubscriptionCreator(settings.Get <TopologySettings>().SubscriptionSettings); var subscriptionDescription = await creator.Create("sometopic2", "existingsubscription2", metadata, sqlFilter, namespaceManager); Assert.IsTrue(subscriptionDescription.RequiresSession); //cleanup await namespaceManager.DeleteTopic("sometopic2"); }
public async Task Should_be_able_to_update_an_existing_subscription_with_new_property_values() { var namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value), AzureServiceBusConnectionString.Value); //cleanup await namespaceManager.DeleteTopic("sometopic1"); await namespaceManager.CreateTopic(new TopicDescription("sometopic1")); await namespaceManager.CreateSubscription(new SubscriptionDescription("sometopic1", "existingsubscription1"), sqlFilter); var settings = DefaultConfigurationValues.Apply(SettingsHolderFactory.BuildWithSerializer()); var extensions = new TransportExtensions <AzureServiceBusTransport>(settings); extensions.Subscriptions().DescriptionCustomizer(description => { description.LockDuration = TimeSpan.FromSeconds(100); description.EnableDeadLetteringOnMessageExpiration = true; }); var creator = new AzureServiceBusSubscriptionCreator(settings.Get <TopologySettings>().SubscriptionSettings); await creator.Create("sometopic1", "existingsubscription1", metadata, sqlFilter, namespaceManager); var subscriptionDescription = await namespaceManager.GetSubscription("sometopic1", "existingsubscription1"); Assert.AreEqual(TimeSpan.FromSeconds(100), subscriptionDescription.LockDuration); }
public async Task Should_be_able_to_update_an_existing_topic_with_new_property_values() { var namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value), AzureServiceBusConnectionString.Value); await namespaceManager.DeleteTopic("existingtopic1"); await namespaceManager.CreateTopic(new TopicDescription("existingtopic1")); var topologyTopicSettings = new TopologyTopicSettings { AutoDeleteOnIdle = TimeSpan.FromMinutes(100), DefaultMessageTimeToLive = TimeSpan.FromMinutes(5) }; var creator = new AzureServiceBusTopicCreator(topologyTopicSettings); await creator.Create("existingtopic1", namespaceManager); var topicDescription = await namespaceManager.GetTopic("existingtopic1"); Assert.AreEqual(TimeSpan.FromMinutes(100), topicDescription.AutoDeleteOnIdle); }
public void TopicSetup() { var namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Value)); if (!namespaceManager.TopicExists(topicPath).GetAwaiter().GetResult()) { namespaceManager.CreateTopic(new TopicDescription(topicPath)).GetAwaiter().GetResult(); } if (!namespaceManager.QueueExists(forwardToQueue).GetAwaiter().GetResult()) { namespaceManager.CreateQueue(new QueueDescription(forwardToQueue)).GetAwaiter().GetResult(); } namespaceManager = new NamespaceManagerAdapterInternal(NamespaceManager.CreateFromConnectionString(AzureServiceBusConnectionString.Fallback)); if (!namespaceManager.TopicExists(topicPath).GetAwaiter().GetResult()) { namespaceManager.CreateTopic(new TopicDescription(topicPath)).GetAwaiter().GetResult(); } if (!namespaceManager.QueueExists(forwardToQueue).GetAwaiter().GetResult()) { namespaceManager.CreateQueue(new QueueDescription(forwardToQueue)).GetAwaiter().GetResult(); } }