public async void WhenTopicIsRemoved_ThenTopicIsCreatedAgain() { var settings = TestSettings.TopicSettingsOptions(); var subscriber = new AzureTopicSubscriber(settings, new AzureBusTopicManagement(settings), Substitute.For <ILogger <AzureTopicSubscriber> >()); var publisher = new AzureTopicPublisher(settings, new AzureBusTopicManagement(settings), Substitute.For <ILogger <AzureTopicPublisher> >()); var id = Guid.NewGuid(); var listener = subscriber.Messages <TestMessageForTopic>(); var message = new TestMessageForTopic { ExampleId = id }; var nameSpace = NamespaceUtils.GetNamespace(settings.Value); var topic = await nameSpace.Topics.GetByNameAsync(message.TopicName); topic.Should().NotBeNull("Topic should exist at this point"); await nameSpace.Topics.DeleteByNameAsync(message.TopicName); Thread.Sleep(TimeSpan.FromSeconds(30)); await publisher.SendAsync(message); await listener .Where(x => x.ExampleId == id) .Timeout(TimeSpan.FromSeconds(60)) .FirstAsync(); }
public void CreateQueIfMissing(string queuName, Type messageType) { var @namespace = NamespaceUtils.GetNamespace(_settings); var queue = @namespace.Queues.List().FirstOrDefault(x => x.Name == queuName); if (queue == null) { _settings.AzureQueueBuilder(@namespace.Queues.Define(queuName), messageType); } }
public void CreateSubscriptionIfMissing(string topicName, string subscriptionName, Type messageType) { var @namespace = NamespaceUtils.GetNamespace(_settings); CreateTopicIfMissing(topicName, messageType, @namespace); var topic = @namespace.Topics.List().FirstOrDefault(x => x.Name == topicName); if (topic == null) { throw new InvalidOperationException($"Cannot find topic '{topicName}' from topics '{string.Join(", ", @namespace.Topics.List().Select(x => x.Name))}'"); } if (!topic.Subscriptions.List().Any(x => x.Name == subscriptionName)) { _settings.AzureSubscriptionBuilder(topic.Subscriptions.Define(subscriptionName), messageType); } }
public void CreateTopicIfMissing(string topicName, Type messageType) { var @namespace = NamespaceUtils.GetNamespace(_settings); CreateTopicIfMissing(topicName, messageType, @namespace); }