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