/// <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 )); }); }