public Task Configure(CancellationToken cancellationToken = default) { SagaIdGenerator = new DefaultSagaIdGenerator(); SagaStorage = new NonDurableSagaPersister(); SynchronizedStorage = new NonDurableSynchronizedStorage(); SynchronizedStorageAdapter = new NonDurableTransactionalSynchronizedStorageAdapter(); OutboxStorage = new NonDurableOutboxStorage(); return(Task.CompletedTask); }
public Task Configure() { SagaIdGenerator = new DefaultSagaIdGenerator(); SagaStorage = new InMemorySagaPersister(); SynchronizedStorage = new InMemorySynchronizedStorage(); SynchronizedStorageAdapter = new InMemoryTransactionalSynchronizedStorageAdapter(); OutboxStorage = new InMemoryOutboxStorage(); return(Task.CompletedTask); }
public Task Configure(CancellationToken cancellationToken = default) { GetContextBagForOutbox = GetContextBagForSagaStorage = () => { var context = new ContextBag(); context.Set(new IncomingMessage("native id", new Dictionary <string, string>(), new byte[0])); return(context); }; SagaIdGenerator = new DefaultSagaIdGenerator(); var sagaPersistenceConfiguration = Variant.Values[0] as SagaPersistenceConfiguration; SupportsPessimisticConcurrency = sagaPersistenceConfiguration.EnablePessimisticLocking; if (SessionTimeout.HasValue) { sagaPersistenceConfiguration.SetPessimisticLeaseLockAcquisitionTimeout(SessionTimeout.Value); } SagaStorage = new SagaPersister(sagaPersistenceConfiguration); var dbName = Guid.NewGuid().ToString(); var urls = Environment.GetEnvironmentVariable("CommaSeparatedRavenClusterUrls") ?? "http://localhost:8080"; documentStore = new DocumentStore { Urls = urls.Split(','), Database = dbName }; documentStore.Initialize(); var dbRecord = new DatabaseRecord(dbName); documentStore.Maintenance.Server.Send(new CreateDatabaseOperation(dbRecord)); IOpenTenantAwareRavenSessions sessionCreator = new OpenRavenSessionByDatabaseName(new DocumentStoreWrapper(documentStore)); SynchronizedStorage = new RavenDBSynchronizedStorage(sessionCreator, null); SynchronizedStorageAdapter = new RavenDBSynchronizedStorageAdapter(null); OutboxStorage = new OutboxPersister(documentStore.Database, sessionCreator, RavenDbOutboxStorage.DeduplicationDataTTLDefault); return(Task.CompletedTask); }
public Task Configure(CancellationToken cancellationToken = default) { var variant = (SqlTestVariant)Variant.Values[0]; var dialect = variant.Dialect; var buildDialect = variant.BuildDialect; var connectionFactory = variant.ConnectionFactory; var pessimisticMode = variant.UsePessimisticMode; if (SessionTimeout.HasValue) { dialect = new TimeoutSettingDialect(dialect, (int)SessionTimeout.Value.TotalSeconds); } var infoCache = new SagaInfoCache( null, Serializer.JsonSerializer, reader => new JsonTextReader(reader), writer => new JsonTextWriter(writer), "PersistenceTests_", dialect, SagaMetadataCollection, name => ShortenSagaName(name)); var connectionManager = new ConnectionManager(connectionFactory); SagaIdGenerator = new DefaultSagaIdGenerator(); SagaStorage = new SagaPersister(infoCache, dialect); SynchronizedStorage = new SynchronizedStorage(connectionManager, infoCache, null); SynchronizedStorageAdapter = new StorageAdapter(connectionManager, infoCache, dialect, null); OutboxStorage = CreateOutboxPersister(connectionManager, dialect, false, false); SupportsPessimisticConcurrency = pessimisticMode; GetContextBagForSagaStorage = () => { var contextBag = new ContextBag(); contextBag.Set(new IncomingMessage("MessageId", new Dictionary <string, string>(), new byte[0])); return(contextBag); }; GetContextBagForOutbox = () => { var contextBag = new ContextBag(); contextBag.Set(new IncomingMessage("MessageId", new Dictionary <string, string>(), new byte[0])); return(contextBag); }; using (var connection = connectionFactory()) { connection.Open(); foreach (var saga in SagaMetadataCollection) { CorrelationProperty correlationProperty = null; if (saga.TryGetCorrelationProperty(out var propertyMetadata)) { correlationProperty = new CorrelationProperty(propertyMetadata.Name, CorrelationPropertyType.String); } var tableName = ShortenSagaName(saga.SagaType.Name); var definition = new SagaDefinition(tableName, saga.EntityName, correlationProperty); connection.ExecuteCommand(SagaScriptBuilder.BuildDropScript(definition, buildDialect), "PersistenceTests"); connection.ExecuteCommand(SagaScriptBuilder.BuildCreateScript(definition, buildDialect), "PersistenceTests"); } connection.ExecuteCommand(OutboxScriptBuilder.BuildDropScript(buildDialect), "PersistenceTests"); connection.ExecuteCommand(OutboxScriptBuilder.BuildCreateScript(buildDialect), "PersistenceTests"); } return(Task.CompletedTask); }