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();
        }
示例#2
0
        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);
        }