コード例 #1
0
ファイル: OutboxProcessor.cs プロジェクト: mumby0168/Convey
    public OutboxProcessor(IServiceProvider serviceProvider, IBusPublisher publisher, OutboxOptions options,
                           ILogger <OutboxProcessor> logger)
    {
        if (options.Enabled && options.IntervalMilliseconds <= 0)
        {
            throw new Exception($"Invalid outbox interval: {options.IntervalMilliseconds} ms.");
        }

        _type = OutboxType.Sequential;
        if (!string.IsNullOrWhiteSpace(options.Type))
        {
            if (!Enum.TryParse <OutboxType>(options.Type, true, out var outboxType))
            {
                throw new ArgumentException($"Invalid outbox type: '{_type}', " +
                                            $"valid types: '{OutboxType.Sequential}', '{OutboxType.Parallel}'.");
            }

            _type = outboxType;
        }

        _serviceProvider = serviceProvider;
        _publisher       = publisher;
        _options         = options;
        _logger          = logger;
        _interval        = TimeSpan.FromMilliseconds(options.IntervalMilliseconds);
        if (options.Enabled)
        {
            _logger.LogInformation($"Outbox is enabled, type: '{_type}', message processing every {options.IntervalMilliseconds} ms.");
            return;
        }

        _logger.LogInformation("Outbox is disabled.");
    }
コード例 #2
0
 public EntityFrameworkMessageOutbox(TContext dbContext, OutboxOptions options,
                                     ILogger <EntityFrameworkMessageOutbox <TContext> > logger)
 {
     _dbContext = dbContext;
     _logger    = logger;
     Enabled    = options.Enabled;
 }
コード例 #3
0
ファイル: MongoMessageOutbox.cs プロジェクト: Allesad/Convey
 public MongoMessageOutbox(IMongoRepository <OutboxMessage, Guid> repository, OutboxOptions options,
                           ILogger <MongoMessageOutbox> logger)
 {
     _repository = repository;
     _logger     = logger;
     Enabled     = options.Enabled;
 }
コード例 #4
0
 public EntityFrameworkMessageOutbox(TContext dbContext, OutboxOptions options,
                                     ILogger <EntityFrameworkMessageOutbox <TContext> > logger)
 {
     _dbContext        = dbContext;
     _logger           = logger;
     _inboxMessagesSet = _dbContext.Set <InboxMessage>();
     Enabled           = options.Enabled;
 }
コード例 #5
0
        public OutboxDataProviderEf(TDbContext dbContext, IOptions <OutboxOptions> outboxOptions, ILogger <OutboxDataProviderEf <TDbContext> > logger)
        {
            if (outboxOptions is null)
            {
                throw new ArgumentNullException(nameof(outboxOptions));
            }

            _dbContext     = dbContext;
            _logger        = logger;
            _outboxOptions = outboxOptions.Value;
        }
コード例 #6
0
 public MongoMessageOutbox(IMongoSessionFactory sessionFactory,
                           IMongoRepository <InboxMessage, string> inboxRepository,
                           IMongoRepository <OutboxMessage, string> outboxRepository,
                           OutboxOptions options, ILogger <MongoMessageOutbox> logger)
 {
     _sessionFactory   = sessionFactory;
     _inboxRepository  = inboxRepository;
     _outboxRepository = outboxRepository;
     _logger           = logger;
     Enabled           = options.Enabled;
 }
コード例 #7
0
        public OutboxCommandHandlerDecorator(ICommandHandler<TCommand> handler, IMessageOutbox outbox,
            OutboxOptions outboxOptions, IMessagePropertiesAccessor messagePropertiesAccessor)
        {
            _handler = handler;
            _outbox = outbox;
            _enabled = outboxOptions.Enabled;

            var messageProperties = messagePropertiesAccessor.MessageProperties;
            _messageId = string.IsNullOrWhiteSpace(messageProperties?.MessageId)
                ? Guid.NewGuid().ToString("N")
                : messageProperties.MessageId;
        }
コード例 #8
0
ファイル: OutboxProcessor.cs プロジェクト: Allesad/Convey
        public OutboxProcessor(IMessageOutbox outbox, IBusPublisher publisher, OutboxOptions options,
                               ILogger <OutboxProcessor> logger)
        {
            if (options.Enabled && options.IntervalMilliseconds <= 0)
            {
                throw new Exception($"Invalid outbox interval: {options.IntervalMilliseconds} ms.");
            }

            _outbox    = outbox as IMessageOutboxAccessor;
            _publisher = publisher;
            _options   = options;
            _logger    = logger;
            _interval  = TimeSpan.FromMilliseconds(options.IntervalMilliseconds);
            if (options.Enabled)
            {
                _logger.LogInformation($"Outbox is enabled, message processing every {options.IntervalMilliseconds} ms.");
                return;
            }

            _logger.LogInformation("Outbox is disabled.");
        }
コード例 #9
0
 public MessageOutboxConfigurator(IServiceCollection services, OutboxOptions options)
 {
     Services = services;
     Options  = options;
 }
コード例 #10
0
 public MessageOutboxConfigurator(IConveyBuilder builder, OutboxOptions options)
 {
     Builder = builder;
     Options = options;
 }
コード例 #11
0
 public InMemoryMessageOutbox(OutboxOptions options, ILogger <InMemoryMessageOutbox> logger)
 {
     _logger = logger;
     _expiry = options.Expiry;
     Enabled = options.Enabled;
 }
コード例 #12
0
 public EFCoreOutboxMessageAccessor(DbContext dbContext, OutboxOptions options)
 {
     _dbContext = dbContext;
     _options   = options;
 }
コード例 #13
0
 public OutboxDispatcher([NotNull] IServiceScopeFactory scopeFactory, [NotNull] IOptions <OutboxOptions> options)
 {
     _serviceScopeFactory = scopeFactory ?? throw new ArgumentNullException(nameof(scopeFactory));
     _outboxOptions       = options.Value;
 }
コード例 #14
0
 public MongoOutboxInitializer(IMongoDatabase database, OutboxOptions options)
 {
     _database = database;
     _options  = options;
 }
コード例 #15
0
 public Neo4JOutboxDataProvider(ITransactionalGraphClient graphClient, IOptions <OutboxOptions> outboxOptions)
 {
     _graphClient   = graphClient;
     _outboxOptions = outboxOptions.Value;
 }
コード例 #16
0
 public EfOutboxDataProvider(TDbContext dbContext, IOptions <OutboxOptions> outboxOptions)
 {
     _dbContext     = dbContext;
     _outboxOptions = outboxOptions.Value;
 }
コード例 #17
0
 public OutboxDataProviderNeo4j(ITransactionalGraphClient graphClient, IOptions <OutboxOptions> outboxOptions)
 {
     _graphClient   = graphClient ?? throw new ArgumentNullException(nameof(graphClient));
     _outboxOptions = outboxOptions?.Value ?? throw new ArgumentNullException(nameof(outboxOptions));
 }
コード例 #18
0
 public MessageOutboxConfigurator(IBioWorldBuilder builder, OutboxOptions options)
 {
     Builder = builder;
     Options = options;
 }