public OutboxMessageProcessorTests() { _transport = Substitute.For <ITransport>(); _outboxStorage = Substitute.For <IOutboxStorage>(); _backoffStrategy = Substitute.For <IBackoffStrategy>(); _busDisposalCancellationTokenSource = new CancellationTokenSource(); _processor = new OutboxMessagesProcessor(TopMessagesToRetrieve, _transport, _outboxStorage, _backoffStrategy, new NullLoggerFactory(), _busDisposalCancellationTokenSource.Token); }
public OutboxMessagesProcessor(int topMessagesToRetrieve, ITransport transport, IOutboxStorage outboxStorage, IBackoffStrategy backoffStrategy, IRebusLoggerFactory rebusLoggerFactory, CancellationToken busDisposalCancellationToken) { _topMessagesToRetrieve = topMessagesToRetrieve; _transport = transport; _outboxStorage = outboxStorage; _backoffStrategy = backoffStrategy; _busDisposalCancellationToken = busDisposalCancellationToken; _log = rebusLoggerFactory.GetLogger <OutboxMessagesProcessor>(); }
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 async Task Configure(CancellationToken cancellationToken = default) { var containerConnectionString = Environment.GetEnvironmentVariable("NServiceBusStorageMongoDB_ConnectionString"); client = string.IsNullOrWhiteSpace(containerConnectionString) ? new MongoClient() : new MongoClient(containerConnectionString); Storage.MongoDB.SagaStorage.InitializeSagaDataTypes(client, databaseName, MongoPersistence.DefaultCollectionNamingConvention, SagaMetadataCollection); SagaStorage = new SagaPersister(SagaPersister.DefaultVersionElementName); SynchronizedStorage = new StorageSessionFactory(client, true, databaseName, MongoPersistence.DefaultCollectionNamingConvention, SessionTimeout ?? MongoPersistence.DefaultTransactionTimeout); var databaseSettings = new MongoDatabaseSettings { ReadConcern = ReadConcern.Majority, ReadPreference = ReadPreference.Primary, WriteConcern = WriteConcern.WMajority }; var database = client.GetDatabase(databaseName, databaseSettings); await database.CreateCollectionAsync(MongoPersistence.DefaultCollectionNamingConvention(typeof(OutboxRecord)), cancellationToken : cancellationToken); OutboxStorage = new OutboxPersister(client, databaseName, MongoPersistence.DefaultCollectionNamingConvention); }
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 async Task Configure(CancellationToken cancellationToken = default) { var statefulService = (StatefulService)TestContext.CurrentContext.Test.Properties.Get("StatefulService"); stateManager = statefulService.StateManager; var timeout = SessionTimeout ?? TimeSpan.FromSeconds(4); SynchronizedStorage = new SynchronizedStorage(stateManager, timeout); SynchronizedStorageAdapter = new SynchronizedStorageAdapter(); var sagaInfoCache = new SagaInfoCache(); sagaInfoCache.Initialize(SagaMetadataCollection); SagaStorage = new SagaPersister(sagaInfoCache); var sagaIdGenerator = new SagaIdGenerator(); sagaIdGenerator.Initialize(sagaInfoCache); SagaIdGenerator = sagaIdGenerator; OutboxStorage = new OutboxStorage(statefulService.StateManager, timeout); await stateManager.RegisterOutboxStorage((OutboxStorage)OutboxStorage, cancellationToken).ConfigureAwait(false); }
public TransportReceiveToPhysicalMessageProcessingConnector(IOutboxStorage outboxStorage) { this.outboxStorage = outboxStorage; }
public OutboxTransportDecorator(ITransport transport, IOutboxStorage outboxStorage) { _transport = transport; _outboxStorage = outboxStorage; }
public OutboxTransportDecoratorTests() { _transport = Substitute.For <ITransport>(); _outboxStorage = Substitute.For <IOutboxStorage>(); _decorator = new OutboxTransportDecorator(_transport, _outboxStorage); }
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); }
public OutboxClientTransportDecorator(ITransport transport, IOutboxStorage outboxStorage) { _transport = transport ?? throw new ArgumentNullException(nameof(transport)); _outboxStorage = outboxStorage ?? throw new ArgumentNullException(nameof(outboxStorage)); }