コード例 #1
0
        public static AssemblyScanningComponent Initialize(Configuration configuration, SettingsHolder settings)
        {
            var shouldScanBinDirectory = configuration.UserProvidedTypes == null;

            List <Type>     availableTypes;
            AssemblyScanner assemblyScanner;

            if (shouldScanBinDirectory)
            {
                var directoryToScan = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;

                assemblyScanner = new AssemblyScanner(directoryToScan);
                availableTypes  = new List <Type>();
            }
            else
            {
                assemblyScanner = new AssemblyScanner(Assembly.GetExecutingAssembly());
                availableTypes  = configuration.UserProvidedTypes;
            }

            var assemblyScannerSettings = configuration.AssemblyScannerConfiguration;

            assemblyScanner.AssembliesToSkip               = assemblyScannerSettings.ExcludedAssemblies;
            assemblyScanner.TypesToSkip                    = assemblyScannerSettings.ExcludedTypes;
            assemblyScanner.ScanNestedDirectories          = assemblyScannerSettings.ScanAssembliesInNestedDirectories;
            assemblyScanner.ThrowExceptions                = assemblyScannerSettings.ThrowExceptions;
            assemblyScanner.ScanAppDomainAssemblies        = assemblyScannerSettings.ScanAppDomainAssemblies;
            assemblyScanner.AdditionalAssemblyScanningPath = assemblyScannerSettings.AdditionalAssemblyScanningPath;

            var scannableAssemblies = assemblyScanner.GetScannableAssemblies();

            availableTypes = availableTypes.Union(scannableAssemblies.Types).ToList();

            configuration.SetDefaultAvailableTypes(availableTypes);

            if (shouldScanBinDirectory)
            {
                settings.AddStartupDiagnosticsSection("AssemblyScanning", new
                {
                    Assemblies = scannableAssemblies.Assemblies.Select(a => new
                    {
                        a.FullName,
                        FileVersion = FileVersionRetriever.GetFileVersion(a)
                    }),
                    scannableAssemblies.ErrorsThrownDuringScanning,
                    scannableAssemblies.SkippedFiles,
                    Settings = assemblyScannerSettings
                });
            }

            return(new AssemblyScanningComponent(availableTypes));
        }
コード例 #2
0
        static List <Type> Scan(AssemblyScanner assemblyScanner, SettingsHolder settings)
        {
            var results = assemblyScanner.GetScannableAssemblies();

            settings.AddStartupDiagnosticsSection("AssemblyScanning", new
            {
                Assemblies = results.Assemblies.Select(a => a.FullName),
                results.ErrorsThrownDuringScanning,
                results.SkippedFiles
            });

            return(results.Types);
        }
コード例 #3
0
 void WriteStartupDiagnostics()
 {
     settings.AddStartupDiagnosticsSection("Azure Service Bus .NET Standard", new
     {
         TopicName                 = settings.TryGet(SettingsKeys.TopicName, out string customTopicName) ? customTopicName : "default",
         EntityMaximumSize         = settings.TryGet(SettingsKeys.MaximumSizeInGB, out int entityMaxSize) ? entityMaxSize.ToString() : "default",
         EnablePartitioning        = settings.TryGet(SettingsKeys.EnablePartitioning, out bool enablePartitioning) ? enablePartitioning.ToString() : "default",
         SubscriptionNameShortener = settings.TryGet(SettingsKeys.SubscriptionNameShortener, out Func <string, string> _) ? "configured" : "default",
         RuleNameShortener         = settings.TryGet(SettingsKeys.RuleNameShortener, out Func <string, string> _) ? "configured" : "default",
         PrefetchMultiplier        = settings.TryGet(SettingsKeys.PrefetchMultiplier, out int prefetchMultiplier) ? prefetchMultiplier.ToString() : "default",
         PrefetchCount             = settings.TryGet(SettingsKeys.PrefetchCount, out int prefetchCount) ? prefetchCount.ToString() : "default",
         UseWebSockets             = settings.TryGet(SettingsKeys.TransportType, out TransportType _) ? "True" : "default",
         TimeToWaitBeforeTriggeringCircuitBreaker = settings.TryGet(SettingsKeys.TransportType, out TimeSpan timeToWait) ? timeToWait.ToString() : "default",
         CustomTokenProvider = settings.TryGet(SettingsKeys.CustomTokenProvider, out ITokenProvider customTokenProvider) ? customTokenProvider.ToString() : "default"
     });
コード例 #4
0
        static void ConfigureMessageTypes(Conventions conventions, SettingsHolder settings)
        {
            var messageMetadataRegistry = new MessageMetadataRegistry(conventions.IsMessageType);

            messageMetadataRegistry.RegisterMessageTypesFoundIn(settings.GetAvailableTypes());

            settings.Set(messageMetadataRegistry);

            var foundMessages = messageMetadataRegistry.GetAllMessages().ToList();

            settings.AddStartupDiagnosticsSection("Messages", new
            {
                CustomConventionUsed           = conventions.CustomMessageTypeConventionUsed,
                NumberOfMessagesFoundAtStartup = foundMessages.Count,
                Messages = foundMessages.Select(m => m.MessageType.FullName)
            });
        }
コード例 #5
0
        public static TransportComponent Initialize(Configuration configuration, SettingsHolder settings)
        {
            var transportDefinition = configuration.TransportDefinition;
            var connectionString    = configuration.TransportConnectionString.GetConnectionStringOrRaiseError(transportDefinition);

            var transportInfrastructure = transportDefinition.Initialize(settings, connectionString);

            //for backwards compatibility
            settings.Set(transportInfrastructure);

            var transportType = transportDefinition.GetType();

            settings.AddStartupDiagnosticsSection("Transport", new
            {
                Type    = transportType.FullName,
                Version = FileVersionRetriever.GetFileVersion(transportType)
            });

            return(new TransportComponent(transportInfrastructure, configuration.QueueBindings));
        }
コード例 #6
0
        public void Run(SettingsHolder settings)
        {
            if (!settings.TryGet("PersistenceDefinitions", out List <EnabledPersistence> definitions))
            {
                return;
            }

            var enabledPersistences = PersistenceStorageMerger.Merge(definitions, settings);

            ValidateSagaAndOutboxUseSamePersistence(enabledPersistences, settings);

            var resultingSupportedStorages = new List <Type>();
            var diagnostics = new Dictionary <string, object>();

            foreach (var definition in enabledPersistences)
            {
                var persistenceDefinition = definition.DefinitionType.Construct <PersistenceDefinition>();

                persistenceDefinition.ApplyDefaults(settings);

                foreach (var storageType in definition.SelectedStorages)
                {
                    Logger.DebugFormat("Activating persistence '{0}' to provide storage for '{1}' storage.", definition.DefinitionType.Name, storageType);
                    persistenceDefinition.ApplyActionForStorage(storageType, settings);
                    resultingSupportedStorages.Add(storageType);

                    diagnostics.Add(storageType.Name, new
                    {
                        Type    = definition.DefinitionType.FullName,
                        Version = FileVersionRetriever.GetFileVersion(definition.DefinitionType)
                    });
                }
            }

            settings.Set("ResultingSupportedStorages", resultingSupportedStorages);

            settings.AddStartupDiagnosticsSection("Persistence", diagnostics);
        }