public OutboxHostedService(IServiceScopeFactory serviceScopeFactory, IBusPublisher publisher, OutboxOptions options, ILogger <OutboxHostedService> logger) { if (options.Enabled && options.IntervalMilliseconds <= 0) { throw new Exception($"Invalid outbox interval: {options.IntervalMilliseconds} ms."); } 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; } _serviceScopeFactory = serviceScopeFactory; _publisher = publisher; _options = options; _logger = logger; _type = OutboxType.Sequential; _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."); }
public MessageOutboxBuilder(IBareBonesBuilder builder, OutboxOptions options) { Builder = builder; Options = options; }