Esempio n. 1
0
        public static void AddProducer(this MessagingOptions builder, Action <ProducerConfig> configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var config = new ProducerConfig();

            configuration(config);

            if (config.ProducerConfiguration == null)
            {
                throw new ArgumentNullException(nameof(config.ProducerConfiguration));
            }

            builder.Container.Register(typeof(IEnumerable <MessageConfiguration>), () => config.MessageConfigurations.Select(a =>
            {
                var c = new MessageConfiguration();
                c.Init(a);
                return(c);
            }), Lifestyle.Singleton);

            builder.Container.Register(typeof(IMessageConfigurationProvider <>), typeof(MessageConfigurationProvider <>), Lifestyle.Singleton);
            builder.Container.RegisterSingleton <IProducerFactory, ProducerFactory>();
            builder.Container.RegisterSingleton <IProducerConfiguration>(config);

            builder.HasProducer = true;
        }