public void NServiceBusValidator_ThrowsException_WhenGettingTransportTypeForEmptyConnectionString()
        {
            var connectionString = string.Empty;
            var configValue      = NServiceBusValidator.GetTransportType(connectionString);

            Assert.IsTrue(configValue != NServiceBusTransportType.RabbitMq && configValue != NServiceBusTransportType.Sql);
        }
Exemple #2
0
        private async Task CreateEndPoint(string name, string connectionString)
        {
            NServiceBusTransportType transportType = NServiceBusValidator.GetTransportType(connectionString);
            var instanceId = NServiceBusInstanceId;

            if (string.IsNullOrEmpty(instanceId))
            {
                instanceId = $"{Dns.GetHostName()}-{ServiceHelper.ServiceName}";
            }
            var endpointConfiguration = new EndpointConfiguration(name);

            endpointConfiguration.MakeInstanceUniquelyAddressable(instanceId);

            object transport;

            if (transportType == NServiceBusTransportType.RabbitMq)
            {
                transport = endpointConfiguration.UseTransport <RabbitMQTransport>();
                ((TransportExtensions <RabbitMQTransport>)transport).ConnectionString(connectionString);
                // for RabbitMQ transport only
                var delayedDelivery = ((TransportExtensions <RabbitMQTransport>)transport).DelayedDelivery();
                delayedDelivery.DisableTimeoutManager();
            }
            else if (transportType == NServiceBusTransportType.Sql)
            {
                transport = endpointConfiguration.UseTransport <SqlServerTransport>();
                ((TransportExtensions <SqlServerTransport>)transport).Transactions(TransportTransactionMode.SendsAtomicWithReceive);
                ((TransportExtensions <SqlServerTransport>)transport).ConnectionString(connectionString);
                ((TransportExtensions <SqlServerTransport>)transport).DefaultSchema("queue");
            }

            var assemblyScanner = endpointConfiguration.AssemblyScanner();
            HashSet <string> assembliesToExclude = new HashSet <string> {
                "Common.dll", "NServiceBus.Persistence.Sql.dll"
            };

            if (transportType == NServiceBusTransportType.RabbitMq)
            {
                assembliesToExclude.Add("nservicebus.transport.sqlserver.dll");
            }
            else if (transportType == NServiceBusTransportType.Sql)
            {
                assembliesToExclude.Add("nservicebus.transports.rabbitmq.dll");
            }
            assemblyScanner.ExcludeAssemblies(assembliesToExclude.ToArray());

            endpointConfiguration.UsePersistence <InMemoryPersistence>();
            endpointConfiguration.UseSerialization <JsonSerializer>();
            endpointConfiguration.EnableInstallers();
            endpointConfiguration.EnableCallbacks(false);
            endpointConfiguration.LimitMessageProcessingConcurrencyTo(ServiceHelper.BrowserPoolMaxSize);
            endpointConfiguration.SendFailedMessagesTo("errors");
            endpointConfiguration.License(_licenseInfo);

            var conventions = endpointConfiguration.Conventions();

            conventions.DefiningTimeToBeReceivedAs(
                type =>
            {
                if (type == typeof(GenerateImageMessage))
                {
                    return(TimeSpan.FromMinutes(5));
                }
                return(TimeSpan.MaxValue);
            });

            var loggerDefinition = NServiceBus.Logging.LogManager.Use <LoggerDefinition>();

            loggerDefinition.Level(NServiceBus.Logging.LogLevel.Warn);

            _endpointInstance = await Endpoint.Start(endpointConfiguration);
        }