Example #1
0
        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));
            });
        }
Example #2
0
        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
                           ));
            });
        }