public void AddOutbox(Action <IOutboxOptions> config) { var configuration = new OutboxOptions(_services); config?.Invoke(configuration); _services.AddTransient <IOutbox>(provider => { var producerConfiguration = provider.GetRequiredService <IProducerConfiguration>(); var repository = provider.GetRequiredService <IOutboxMessageRepository>(); return(new OutboxMessageCollector(producerConfiguration.MessageIdGenerator, producerConfiguration.OutgoingMessageRegistry, repository)); }); }
public static IServiceCollection AddOutbox(this IServiceCollection services, Action <IOutboxOptions> config) { var registry = new OutboxRegistry(); var configuration = new OutboxOptions(services, registry); config?.Invoke(configuration); services.AddTransient <IOutbox>(provider => { var repository = provider.GetRequiredService <IOutboxMessageRepository>(); return(new OutboxMessageCollector(registry, repository)); }); return(services); }
/// <summary> /// Enable the Dafda outbox collector implementation, configurable using the <paramref name="options"/> /// </summary> /// <param name="services">The service collection</param> /// <param name="options">Configure the <see cref="OutboxOptions"/></param> public static void AddOutbox(this IServiceCollection services, Action <OutboxOptions> options) { var outgoingMessageRegistry = new OutgoingMessageRegistry(); var outboxOptions = new OutboxOptions(services, outgoingMessageRegistry); options?.Invoke(outboxOptions); var configuration = outboxOptions.Build(); services.AddTransient(provider => new OutboxQueue( configuration.MessageIdGenerator, outgoingMessageRegistry, provider.GetRequiredService <IOutboxEntryRepository>(), configuration.Notifier, configuration.TopicPayloadSerializerRegistry )); }
public static void AddOutbox(this IServiceCollection services, Action <OutboxOptions> options) { var outgoingMessageRegistry = new OutgoingMessageRegistry(); var outboxOptions = new OutboxOptions(services, outgoingMessageRegistry); options?.Invoke(outboxOptions); var configuration = outboxOptions.Build(); services.AddTransient(provider => { var messageIdGenerator = configuration.MessageIdGenerator; var outboxMessageRepository = provider.GetRequiredService <IOutboxMessageRepository>(); var outboxNotifier = provider.GetRequiredService <IOutboxNotifier>(); return(new OutboxQueue( messageIdGenerator, outgoingMessageRegistry, outboxMessageRepository, outboxNotifier )); }); }