コード例 #1
0
        public void ConfigurePersistence(PersistenceExtensions <SqlPersistence> persistence)
        {
            persistence.TablePrefix("");
            var subscriptions = persistence.SubscriptionSettings();

            subscriptions.CacheFor(TimeSpan.FromMinutes(1));
        }
コード例 #2
0
        public static EndpointConfiguration CreateCommonConfiguration(string name)
        {
            string connectionString   = @"Server=192.168.0.114;Database=ServiceControlSql;User Id=sa;Password=GQI1qNeq0oEHlL;";
            EndpointConfiguration cfg = new EndpointConfiguration(name);
            PersistenceExtensions <SqlPersistence>         persistence = cfg.UsePersistence <SqlPersistence>();
            TransportExtensions <SqlServerTransport>       transport   = cfg.UseTransport <SqlServerTransport>();
            SerializationExtensions <NewtonsoftSerializer> ser         = cfg.UseSerialization <NewtonsoftSerializer>();

            cfg.AuditSagaStateChanges(serviceControlQueue: "Particular.ServiceControl.Sql");
            cfg.AuditProcessedMessagesTo("audit");
            cfg.SendFailedMessagesTo("error");
            cfg.EnableInstallers();
            cfg.DefineCriticalErrorAction(OnCriticalError);

            persistence.SqlDialect <SqlDialect.MsSqlServer>();
            persistence.ConnectionBuilder(() => new SqlConnection(connectionString));
            persistence.SubscriptionSettings().DisableCache();

            transport.ConnectionString(connectionString);
            transport.Transactions(TransportTransactionMode.SendsAtomicWithReceive);
            transport.Routing().ApplyRouting();

            RecoverabilitySettings recoverabilityConfig = cfg.Recoverability();

            recoverabilityConfig.Immediate(delegate(ImmediateRetriesSettings config)
            {
                config.NumberOfRetries(3);
            });
            recoverabilityConfig.Delayed(delegate(DelayedRetriesSettings config)
            {
                config.NumberOfRetries(3);
            });

            return(cfg);
        }
コード例 #3
0
        /// <summary>
        /// Configures the queue used to store subscriptions.
        /// </summary>
        /// <param name="persistenceExtensions">The settings to extend.</param>
        /// <param name="queue">The queue name.</param>
        public static void SubscriptionQueue(this PersistenceExtensions <MsmqPersistence> persistenceExtensions, string queue)
        {
            Guard.AgainstNull(nameof(persistenceExtensions), persistenceExtensions);
            Guard.AgainstNull(nameof(queue), queue);

            persistenceExtensions.Settings.Set(msmqPersistenceQueueConfigurationKey, queue);
        }
コード例 #4
0
        public void Persist_TypeOfIOperableOnlyNotIDeclaration_ThrowsException()
        {
            var operableOnly = Substitute.For <IOperable <MyClass> >();

            {
                Should.Throw <ArgumentException>(() => PersistenceExtensions.Persist(operableOnly));
            }
        }
コード例 #5
0
        public static void HandleEvent(Event @event)
        {
            IEventEmitter eventEmitter = DIExtensions.Container.GetInstance <IEventEmitter>();

            eventEmitter.EmitEvent(@event);

            PersistenceExtensions.OpenTransaction();
            DIExtensions.Container.GetInstance <EventDispatcher>().DispatchEvents();
            PersistenceExtensions.CommitTransaction();
        }
コード例 #6
0
        public void SetConnectionString(PersistenceExtensions <MongoDBPersistence> config)
        {
            config.SetConnectionString("mongodb://ultratinef:27017");

            config.GetSettings()
            .Get <string>(MongoPersistenceConstants.ConnectionStringKey)
            .Should()
            .Be("mongodb://ultratinef:27017");
            config.GetSettings().HasSetting(MongoPersistenceConstants.DatabaseNameKey).Should().BeFalse();
        }
コード例 #7
0
        public void SetDatabaseName(PersistenceExtensions <MongoDBPersistence> config)
        {
            config.SetDatabaseName("MyDatabase");

            config.GetSettings()
            .Get <string>(MongoPersistenceConstants.DatabaseNameKey)
            .Should()
            .Be("MyDatabase");

            config.GetSettings().HasSetting(MongoPersistenceConstants.ConnectionStringKey).Should().BeFalse();
        }
        public void Should_have_configured_storage_maxsize()
        {
            var settings            = new SettingsHolder();
            var persistenceSettings = new PersistenceExtensions <InMemoryPersistence>(settings);

#pragma warning disable 0618
            persistenceSettings.GatewayDeduplicationCacheSize(42);

            Assert.AreEqual(42, settings.Get <int>(InMemoryGatewayPersistence.MaxSizeKey));
#pragma warning restore 0618
        }
コード例 #9
0
        /// <summary>
        /// The set database name.
        /// </summary>
        /// <param name="config">
        /// The config.
        /// </param>
        /// <param name="databaseName">
        /// The database name.
        /// </param>
        /// <returns>
        /// The <see cref="PersistenceExtensions"/>.
        /// </returns>
        public static PersistenceExtensions <MongoDBPersistence> SetDatabaseName(
            this PersistenceExtensions <MongoDBPersistence> config,
            string databaseName)
        {
            Contract.Requires <ArgumentNullException>(config != null, "config != null");
            Contract.Requires <ArgumentNullException>(databaseName != null, "databaseName != null");
            Contract.Ensures(Contract.Result <PersistenceExtensions <MongoDBPersistence> >() != null);

            config.GetSettings().Set(MongoPersistenceConstants.DatabaseNameKey, databaseName);

            return(config);
        }
コード例 #10
0
        /// <summary>
        /// The set connection string.
        /// </summary>
        /// <param name="config">
        /// The config.
        /// </param>
        /// <param name="connectionString">
        /// The database name.
        /// </param>
        /// <returns>
        /// The <see cref="PersistenceExtensions"/>.
        /// </returns>
        public static PersistenceExtensions <MongoDBPersistence> SetConnectionString(
            this PersistenceExtensions <MongoDBPersistence> config,
            string connectionString)
        {
            Contract.Requires <ArgumentNullException>(config != null, "config != null");
            Contract.Requires <ArgumentNullException>(connectionString != null, "connectionString != null");
            Contract.Ensures(Contract.Result <PersistenceExtensions <MongoDBPersistence> >() != null);

            config.GetSettings().Set(MongoPersistenceConstants.ConnectionStringKey, connectionString);

            return(config);
        }
コード例 #11
0
        public void Customize(IFixture fixture)
        {
            var settings = new SettingsHolder();

            settings.Set("NServiceBus.Routing.EndpointName", "UnitTests");
            var config = new PersistenceExtensions <MongoDBPersistence>(settings);

            fixture.Register(() => settings);
            fixture.Register(() => config);

            fixture.Customize <TimeoutData>(
                c => c.With(t => t.OwningTimeoutManager, config.GetSettings().EndpointName()));
        }
コード例 #12
0
        public void ShouldBeAbleToPersistUsingListBuilder()
        {
            using (mocks.Record())
            {
                listBuilderImpl.Expect(x => x.Build()).Return(theList);
                persistenceService.Expect(x => x.Create(theList));
            }

            BuilderSetup.SetPersistenceService(persistenceService);

            using (mocks.Playback())
            {
                PersistenceExtensions.Persist(listBuilderImpl);
            }
        }
コード例 #13
0
        public void Persist_TypeOfIOperableOnlyNotIDeclaration_ThrowsException()
        {
            var operableOnly = mocks.DynamicMock <IOperable <MyClass> >();

            using (mocks.Record())
            {}

            using (mocks.Playback())
            {
                // TODO FIX
                #if !SILVERLIGHT
                Assert.Throws <ArgumentException>(() => PersistenceExtensions.Persist(operableOnly));
                #endif
            }
        }
コード例 #14
0
        public void Should_have_configured_maxsize()
        {
            var feature   = new InMemoryGatewayPersistence();
            var settings  = new SettingsHolder();
            var container = new CommonObjectBuilder(new LightInjectObjectBuilder());

            var persistenceSettings = new PersistenceExtensions <InMemoryPersistence>(settings);

            persistenceSettings.GatewayDeduplicationCacheSize(42);

            feature.Setup(new FeatureConfigurationContext(settings, container, null, null, null));

            var implementation = (InMemoryGatewayDeduplication)container.Build <IDeduplicateMessages>();

            Assert.AreEqual(42, implementation.maxSize);
        }
コード例 #15
0
        public void ShouldBeAbleToPersistFromADeclaration()
        {
            using (mocks.Record())
            {
                listBuilderImpl.Expect(x => x.Build()).Return(theList);
                persistenceService.Expect(x => x.Create(theList));
                ((IDeclaration <MyClass>)operable).Expect(x => x.ListBuilderImpl).Return(listBuilderImpl);
            }

            BuilderSetup.SetPersistenceService(persistenceService);

            using (mocks.Playback())
            {
                PersistenceExtensions.Persist(operable);
            }
        }
コード例 #16
0
        public void ShouldBeAbleToPersistUsingListBuilder()
        {
            var builderSetup = new BuilderSettings();
            {
                listBuilderImpl.BuilderSettings.Returns(builderSetup);

                listBuilderImpl.Build().Returns(theList);
                persistenceService.Create(theList);
            }


            {
                builderSetup.SetPersistenceService(persistenceService);
                PersistenceExtensions.Persist(listBuilderImpl);
            }
        }
コード例 #17
0
        public void ShouldBeAbleToPersistUsingSingleObjectBuilder()
        {
            var obj = new MyClass();

            using (mocks.Record())
            {
                singleObjectBuilder.Expect(x => x.Build()).Return(obj);
                persistenceService.Expect(x => x.Create(obj));
            }

            BuilderSetup.SetPersistenceService(persistenceService);

            using (mocks.Playback())
            {
                PersistenceExtensions.Persist(singleObjectBuilder);
            }
        }
コード例 #18
0
        public void ShouldBeAbleToPersistFromADeclaration()
        {
            var builderSetup = new BuilderSettings();
            {
                listBuilderImpl.BuilderSettings.Returns(builderSetup);

                listBuilderImpl.Build().Returns(theList);
                listBuilderImpl.BuilderSettings.Returns(builderSetup);
                persistenceService.Create(theList);
                ((IDeclaration <MyClass>)operable).ListBuilderImpl.Returns(listBuilderImpl);
            }

            {
                builderSetup.SetPersistenceService(persistenceService);
                PersistenceExtensions.Persist(operable);
            }
        }
コード例 #19
0
        public void ShouldBeAbleToPersistUsingListBuilder()
        {
            var builderSetup = new BuilderSettings();

            using (mocks.Record())
            {
                listBuilderImpl.Stub(x => x.BuilderSettings).Return(builderSetup);

                listBuilderImpl.Expect(x => x.Build()).Return(theList);
                persistenceService.Expect(x => x.Create(theList));
            }

            using (mocks.Playback())
            {
                builderSetup.SetPersistenceService(persistenceService);
                PersistenceExtensions.Persist(listBuilderImpl);
            }
        }
コード例 #20
0
        public void ShouldBeAbleToPersistUsingSingleObjectBuilder()
        {
            var builderSetup = new BuilderSettings();
            var obj          = new MyClass();

            {
                singleObjectBuilder.BuilderSettings.Returns(builderSetup);

                singleObjectBuilder.Build().Returns(obj);
                persistenceService.Create(obj);
            }

            {
                builderSetup.SetPersistenceService(persistenceService);

                PersistenceExtensions.Persist(singleObjectBuilder);
            }
        }
コード例 #21
0
 /// <summary>
 /// Enables Subscription Storage to use caching.
 /// </summary>
 /// <param name="persistenceConfiguration"></param>
 /// <param name="expiration">The period of time to cache subscriptions list for.</param>
 public static PersistenceExtensions <NHibernatePersistence> EnableCachingForSubscriptionStorage(this PersistenceExtensions <NHibernatePersistence> persistenceConfiguration, TimeSpan expiration)
 {
     persistenceConfiguration.GetSettings().Set(NHibernateSubscriptionStorage.CacheExpirationSettingsKey, expiration);
     return(persistenceConfiguration);
 }
コード例 #22
0
 /// <summary>
 /// Configures Subscription Storage to use the <paramref name="configuration"/>.
 /// </summary>
 /// <param name="persistenceConfiguration"></param>
 /// <param name="configuration">The <see cref="Configuration"/> object.</param>
 public static PersistenceExtensions <NHibernatePersistence> UseSubscriptionStorageConfiguration(this PersistenceExtensions <NHibernatePersistence> persistenceConfiguration, Configuration configuration)
 {
     persistenceConfiguration.GetSettings().Set("NHibernate.Subscriptions.Configuration", configuration);
     return(persistenceConfiguration);
 }
コード例 #23
0
 /// <summary>
 /// Disables automatic schema update.
 /// </summary>
 /// <param name="persistenceConfiguration"></param>
 public static PersistenceExtensions <NHibernatePersistence> DisableSubscriptionStorageSchemaUpdate(this PersistenceExtensions <NHibernatePersistence> persistenceConfiguration)
 {
     persistenceConfiguration.GetSettings().Set(NHibernateSubscriptionStorage.AutoupdateschemaSettingsKey, false);
     return(persistenceConfiguration);
 }
コード例 #24
0
 public static PersistenceExtensions <RavenDBPersistence> DoNotUseLegacyConventionsWhichIsOnlySafeForNewEndpoints(this PersistenceExtensions <RavenDBPersistence> config)
 {
     throw new NotImplementedException();
 }
コード例 #25
0
 /// <summary>
 /// Configures Subscription Storage to use the <paramref name="configuration"/>.
 /// </summary>
 /// <param name="persistenceConfiguration"></param>
 /// <param name="configuration">The <see cref="Configuration"/> object.</param>
 public static PersistenceExtensions <NHibernatePersistence> UseGatewayDeduplicationConfiguration(this PersistenceExtensions <NHibernatePersistence> persistenceConfiguration, Configuration configuration)
 {
     persistenceConfiguration.GetSettings().Set("NHibernate.GatewayDeduplication.Configuration", configuration);
     return(persistenceConfiguration);
 }
コード例 #26
0
    public static PersistenceExtensions <RavenDBPersistence> ResetDocumentStoreSettings(this PersistenceExtensions <RavenDBPersistence> cfg, out TestDatabaseInfo dbInfo)
    {
        var settings = cfg.GetSettings();
        var docStore = ConfigureEndpointRavenDBPersistence.GetDefaultDocumentStore(settings);

        settings.Set("RavenDbDocumentStore", null);
        dbInfo = new TestDatabaseInfo
        {
            Urls     = docStore.Urls,
            Database = docStore.Database
        };
        return(cfg);
    }
コード例 #27
0
 /// <summary>
 /// Disables automatic schema update.
 /// </summary>
 /// <param name="persistenceConfiguration"></param>
 public static PersistenceExtensions <NHibernatePersistence> DisableGatewayDeduplicationSchemaUpdate(this PersistenceExtensions <NHibernatePersistence> persistenceConfiguration)
 {
     persistenceConfiguration.GetSettings().Set("NHibernate.GatewayDeduplication.AutoUpdateSchema", false);
     return(persistenceConfiguration);
 }
コード例 #28
0
 /// <summary>
 ///     Configures the given document store to be used when storing sagas
 /// </summary>
 /// <param name="cfg">Object to attach to</param>
 /// <param name="documentStore">The document store to be used</param>
 public static PersistenceExtensions <MartenPersistence> UseDocumentStoreForSagas(this PersistenceExtensions <MartenPersistence> cfg, IDocumentStore documentStore)
 {
     DocumentStoreManager.SetDocumentStore <StorageType.Sagas>(cfg.GetSettings(), documentStore);
     return(cfg);
 }
 public static void UseStorage(this PersistenceExtensions <TestingInMemoryPersistence> extensions, TestingInMemorySubscriptionStorage storageInstance)
 {
     extensions.GetSettings().Set("InMemoryPersistence.StorageInstance", storageInstance);
 }
コード例 #30
0
 /// <summary>
 ///     Configures the given document store to be used when storing sagas
 /// </summary>
 /// <param name="cfg">Object to attach to</param>
 /// <param name="storeCreator">A Func that will create the document store on NServiceBus initialization.</param>
 public static PersistenceExtensions <MartenPersistence> UseDocumentStoreForSagas(this PersistenceExtensions <MartenPersistence> cfg, Func <ReadOnlySettings, IDocumentStore> storeCreator)
 {
     DocumentStoreManager.SetDocumentStore <StorageType.Sagas>(cfg.GetSettings(), storeCreator);
     return(cfg);
 }