Exemplo n.º 1
0
        public FailoverSteps(Settings settings)
        {
            transportSettings = settings.AzureServiceBusTransport.Clone();

            transportSettings.ConnectionStrings = new[]
            {
                "Endpoint=sb://badconnstring.somesuch.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=6SpfTD7REZVLBcgBjQ4epN8AOZAMbZTkE20Rq+/ACg8=",
                transportSettings.ConnectionStrings.Single()
            };
        }
        public void Setup()
        {
            settings = new AzureServiceBusTransportSettings
            {
                ConnectionStrings = new[]
                {
                    "connection 1",
                    "connection 2"
                },
                ReadTimeout                        = TimeSpan.FromSeconds(1),
                LongWaitReadTimeout                = TimeSpan.FromSeconds(3),
                BackoffDelayForFaultyConnection    = TimeSpan.FromSeconds(5),
                BackoffDelayIfAllConnectionsFaulty = TimeSpan.FromSeconds(7)
            };

            source = new AzureServiceBusMessageSource(
                settings,
                mockSubscriptionInitialiser.Object,
                new[]
            {
                busInstance1.Object,
                busInstance2.Object
            },
                new FullNameTypeMap(),
                NullLogger <AzureServiceBusMessageSource> .Instance,
                EndpointName);

            azureMessage = new Message
            {
                MessageId      = Guid.NewGuid().ToString(),
                Body           = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject("message body")),
                UserProperties =
                {
                    { "TestHeader",       "TestValue"       },
                    { "MessageTypeNames", ";System.String;" }
                }
            };

            azureMessage.SystemProperties.SetPrivateProperty("SequenceNumber", 1L);
            azureMessage.SystemProperties.SetPrivateProperty("LockTokenGuid", Guid.NewGuid());
            azureMessage.SystemProperties.SetPrivateProperty("DeliveryCount", 22);

            busInstance1.SetupTryReceiveMessagesReturns(azureMessage);
            busInstance2.SetupTryReceiveMessagesReturns(azureMessage);

            incomingMessage = new IncomingMessage(
                Guid.NewGuid().ToString(),
                "message body",
                new[] { "System.String" },
                DateTime.UtcNow,
                DateTime.UtcNow + TimeSpan.FromSeconds(10),
                1,
                providerData: new ProviderData(busInstance1.Object, "lock token", 1234, null));
        }
        public void Setup()
        {
            settings = new AzureServiceBusTransportSettings
            {
                ConnectionStrings = new[]
                {
                    "connection 1",
                    "connection 2"
                },
                ReadTimeout                        = TimeSpan.FromSeconds(1),
                LongWaitReadTimeout                = TimeSpan.FromSeconds(3),
                BackoffDelayForFaultyConnection    = TimeSpan.FromSeconds(5),
                BackoffDelayIfAllConnectionsFaulty = TimeSpan.FromSeconds(7)
            };

            instance = new AzureServiceBusInstance(
                mockMessageReceiver.Object,
                mockTopicClient.Object,
                settings,
                NullLogger <AzureServiceBusInstance> .Instance,
                1);
        }
 private static IServiceCollection AddSimpleEventBus(this IServiceCollection services, AzureServiceBusTransportSettings azureServiceBusTransportSettings)
 => services.AddSimpleEventBus(
     options => options
     .UseEndpointName("SimpleEventBus.MinimalExample.Subscriber")
     .UseAzureServiceBus(azureServiceBusTransportSettings)
     .UseSingletonHandlersIn(typeof(Program).Assembly));
Exemplo n.º 5
0
        public static Options UseAzureServiceBus(this Options options, AzureServiceBusTransportSettings settings)
        {
            if (!settings.ConnectionStrings.Any())
            {
                throw new InvalidOperationException(
                          $"No connection strings were set up in the {nameof(AzureServiceBusTransportSettings)} instance given to {nameof(UseAzureServiceBus)}.");
            }

            var connectionStringNumber = 0;

            foreach (var connectionString in settings.ConnectionStrings)
            {
                connectionStringNumber++;

                options.Services
                .AddSingleton <IAzureServiceBusInstance>(
                    sp => new AzureServiceBusInstance(
                        new MessageReceiver(
                            connectionString,
                            EntityNameHelper.FormatSubscriptionPath(
                                settings.SafeEffectiveTopicName,
                                SubscriptionDescriptionExtensions.SafeSubscriptionName(options.EndpointName))),
                        new TopicClient(
                            connectionString,
                            settings.SafeEffectiveTopicName)
                {
                    OperationTimeout = settings.SendTimeout
                },
                        settings,
                        sp.GetLoggerOrDefault <AzureServiceBusInstance>(),
                        connectionStringNumber));
            }

            options
            .Services
            .AddSingleton(settings)
            .AddSingleton <ISubscriptionInitialiser>(
                sp => new SubscriptionInitialiser(
                    settings,
                    sp.GetLoggerOrDefault <AzureServiceBusMessageSource>()))
            .AddSingleton(
                sp => new AzureServiceBusMessageSink(
                    sp.GetFailoverStrategyOrDefault(
                        settings.ConnectionStrings)))
            .AddSingleton(
                sp => new AzureServiceBusMessageSource(
                    settings,
                    sp.GetRequiredService <ISubscriptionInitialiser>(),
                    sp.GetServices <IAzureServiceBusInstance>(),
                    sp.GetRequiredService <ITypeMap>(),
                    sp.GetLoggerOrDefault <AzureServiceBusMessageSource>(),
                    sp.GetRequiredService <Options>().EndpointName))
            .AddSingleton <IMessageSink>(
                sp => sp.GetRequiredService <AzureServiceBusMessageSink>())
            .AddScoped <IMessageSource>(
                sp => sp.GetRequiredService <AzureServiceBusMessageSource>())
            .AddSingleton <NoFailoverStrategy>()
            .AddSingleton <ActiveActiveFailoverStrategy>()
            .AddSingleton <ActivePassiveFailoverStrategy>();

            return(options);
        }
 private static IServiceCollection AddSimpleEventBus(this IServiceCollection services, AzureServiceBusTransportSettings azureServiceBusTransportSettings)
 => services.AddSimpleEventBus(
     options => options
     .UseEndpointName("SimpleEventBus.MinimalExample.Publisher")
     .UseAzureServiceBus(azureServiceBusTransportSettings));