Esempio n. 1
0
        public static Task <ISubscriptionTrackingService> InitSubscriptionTrackingService(
            SubscriptionTrackingElement config)
        {
            var factory = new SubscriptionTrackingServiceFactory();

            return(factory.InitSubscriptionTrackingService(config));
        }
Esempio n. 2
0
        /// <inheritdoc />
        public Task <ISubscriptionTrackingService> CreateSubscriptionTrackingService(
            SubscriptionTrackingElement configuration)
        {
            var connectionName = configuration.GetString("connectionName");

            if (string.IsNullOrWhiteSpace(connectionName))
            {
                throw new ConfigurationErrorsException(
                          "Attribute 'connectionName' is required for SQL subscription tracking service");
            }

            var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionName];

            if (connectionStringSettings == null)
            {
                throw new ConfigurationErrorsException($"Connection string settings \"{connectionName}\" not found");
            }
            var sqlSubscriptionTrackingService = new SQLSubscriptionTrackingService(connectionStringSettings);

            sqlSubscriptionTrackingService.Init();

            var multicast        = configuration.Multicast;
            var multicastFactory = new MulticastSubscriptionTrackingServiceFactory();

            return(multicastFactory.InitSubscriptionTrackingService(multicast, sqlSubscriptionTrackingService));
        }
        public FilesystemServicesProviderSubscriptionTrackingServiceTests(FilesystemFixture fixture)
        {
#if NETCOREAPP2_0
            Configuration = new ConfigurationBuilder()
                            .AddInMemoryCollection()
                            .Build();
#endif
            Path = fixture.BaseDirectory;
        }
Esempio n. 4
0
        /// <summary>
        /// Returns an in-memory subscription tracking service
        /// </summary>
        /// <param name="configuration">The subscription tracking configuration element</param>
        /// <returns>Returns an in-memory subscription tracking service</returns>
        public Task <ISubscriptionTrackingService> CreateSubscriptionTrackingService(
            SubscriptionTrackingElement configuration)
        {
            var inMemoryTrackingService = new InMemorySubscriptionTrackingService();
            var multicast        = configuration.Multicast;
            var multicastFactory = new MulticastSubscriptionTrackingServiceFactory();

            return(multicastFactory.InitSubscriptionTrackingService(multicast, inMemoryTrackingService));
        }
        public MongoDBServicesProviderSubscriptionTrackingServiceTests(MongoDBFixture fixture)
        {
#if NETCOREAPP2_0
            Configuration = new ConfigurationBuilder()
                            .AddInMemoryCollection()
                            .Build();
#endif
            ConnectionStringSettings = fixture.ConnectionStringSettings;
            ConfigureAttribute("connectionName", fixture.ConnectionStringSettings.Name);
        }
        /// <inheritdoc />
        /// <summary>
        /// Creates an initializes a <see cref="T:Platibus.ISubscriptionTrackingService" />
        /// based on the provided <paramref name="configuration" />.
        /// </summary>
        /// <param name="configuration">The journaling configuration
        /// element.</param>
        /// <returns>Returns a task whose result is an initialized
        /// <see cref="T:Platibus.ISubscriptionTrackingService" />.</returns>
        public Task <ISubscriptionTrackingService> CreateSubscriptionTrackingService(
            SubscriptionTrackingElement configuration)
        {
            var path = configuration.GetString("path");
            var fsTrackingBaseDir = GetRootedDirectory(path);
            var fsTrackingService = new FilesystemSubscriptionTrackingService(fsTrackingBaseDir);

            fsTrackingService.Init();

            var multicast        = configuration.Multicast;
            var multicastFactory = new MulticastSubscriptionTrackingServiceFactory();

            return(multicastFactory.InitSubscriptionTrackingService(multicast, fsTrackingService));
        }
Esempio n. 7
0
        /// <inheritdoc />
        public Task <ISubscriptionTrackingService> CreateSubscriptionTrackingService(SubscriptionTrackingElement configuration)
        {
            var connectionName = configuration.GetString("connectionName");

            if (string.IsNullOrWhiteSpace(connectionName))
            {
                throw new ConfigurationErrorsException(
                          "Attribute 'connectionName' is required for MongoDB subscription tracking service");
            }

            var connectionStringSettings = ConfigurationManager.ConnectionStrings[connectionName];

            if (connectionStringSettings == null)
            {
                throw new ConfigurationErrorsException("Connection string settings \"" + connectionName + "\" not found");
            }

            var databaseName   = configuration.GetString("database");
            var collectionName = configuration.GetString("collection");
            var database       = MongoDBHelper.Connect(connectionStringSettings, databaseName);
            var subscriptionTrackingOptions = new MongoDBSubscriptionTrackingOptions(database)
            {
                CollectionName = collectionName
            };
            var subscriptionTrackingService = new MongoDBSubscriptionTrackingService(subscriptionTrackingOptions);

            var multicast = configuration.Multicast;

            if (multicast == null || !multicast.Enabled)
            {
                return(Task.FromResult <ISubscriptionTrackingService>(subscriptionTrackingService));
            }

            var multicastTrackingService = new MulticastSubscriptionTrackingService(
                subscriptionTrackingService, multicast.Address, multicast.Port);

            return(Task.FromResult <ISubscriptionTrackingService>(multicastTrackingService));
        }
        /// <summary>
        /// Initializes a subscription tracking service based on the supplied
        /// <paramref name="configuration"/>
        /// </summary>
        /// <param name="configuration">The subscription tracking configuration</param>
        /// <returns>Returns a task whose result is the initialized subscription tracking service</returns>
        public async Task <ISubscriptionTrackingService> InitSubscriptionTrackingService(SubscriptionTrackingElement configuration)
        {
            var myConfig = configuration ?? new SubscriptionTrackingElement();
            var provider = await GetProvider(myConfig.Provider);

            await _diagnosticService.EmitAsync(
                new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization)
            {
                Detail = "Initializing subscription tracking service"
            }.Build());

            var subscriptionTrackingService = await provider.CreateSubscriptionTrackingService(myConfig);

            await _diagnosticService.EmitAsync(
                new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization)
            {
                Detail = $"Message queueing service {subscriptionTrackingService.GetType().FullName} initialized"
            }.Build());

            return(subscriptionTrackingService);
        }