/// <summary>
 /// Register Kafka raw subscriber service
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <returns></returns>
 public static MessagingBuilder AddKafkaSubscriber(this MessagingBuilder builder)
 {
     builder.Services.TryAddSingleton(c => c.GetRequiredService <IOptions <KafkaOptions> >().Value);
     builder.Services.TryAddSingleton <IBlockingRawMessageReaderFactory <KafkaOptions>, KafkaBlockingRawMessageReaderFactory>();
     builder.AddRawMessageHandlerSubscriber <BlockingReaderRawMessageHandlerSubscriber <KafkaOptions> >();
     return(builder);
 }
 private static void ValidBuilderSetup(MessagingBuilder builder)
 {
     builder
     .AddRawMessageHandlerSubscriber <IRawMessageHandlerSubscriber>()
     .AddRawMessagePublisher <IRawMessagePublisher>()
     .AddTopic <MessagingBuilderTests>(nameof(MessagingBuilderTests))
     .AddSerialization(b => b.AddSerializer <ISerializer>(ServiceLifetime.Singleton));
 }
        public static void AddMessagePublishing(this IServiceCollection services, string queueName, Action <MessagingBuilder> builderFn = null)
        {
            var builder = new MessagingBuilder(services);

            services.AddHostedService <QueueReaderService>();
            services.AddSingleton(new MessageHandlerRepository(builder.MessageHandlers));

            builderFn?.Invoke(builder);
            var queueNameService = new QueueName(queueName);

            services.AddSingleton(queueNameService);
            var connection = new RabbitMqConnection();

            services.AddSingleton(connection);
            services.AddScoped <IMessagePublisher, RabbitMqMessagePublisher>();
        }
        /// <summary>
        /// Add Messaging services
        /// </summary>
        /// <param name="services">ServicesCollection</param>
        /// <param name="builderAction">Action to handle the messaging builder</param>
        /// <returns>ServicesCollection</returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static ServiceCollection AddMessaging(
            this ServiceCollection services,
            Action <MessagingBuilder> builderAction)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }
            if (builderAction == null)
            {
                throw new ArgumentNullException(nameof(builderAction));
            }

            var builder = new MessagingBuilder(services);

            builderAction.Invoke(builder);
            builder.Build();

            return(services);
        }
Beispiel #5
0
        public static IMessagingBuilder EnableMessaging(this Container container, Action <MessagingOptions> options)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

            var builder = new MessagingBuilder(container);

            builder.Container.RegisterSingleton(new SingleInstanceFactory(builder.Container.GetInstance));
            builder.Container.RegisterSingleton(new MultiInstanceFactory(builder.Container.GetAllInstances));

            var opt = new MessagingOptions(container);

            options(opt);

            builder.HasConsumer = opt.HasConsumer;
            builder.HasProducer = opt.HasProducer;

            return(builder);
        }
 /// <summary>
 /// Register Redis raw subscriber service
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <returns></returns>
 public static MessagingBuilder AddRedisSubscriber(this MessagingBuilder builder)
 {
     builder.AddRawMessageHandlerSubscriber <RedisRawMessageHandlerSubscriber>();
     return(builder);
 }
 /// <summary>
 /// Register Redis raw publisher service
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <returns></returns>
 public static MessagingBuilder AddRedisPublisher(this MessagingBuilder builder)
 {
     builder.AddRawMessagePublisher <RedisRawMessagePublisher>();
     return(builder);
 }
 /// <summary>
 /// Adds both Redis publisher and subscriber with <see cref="IConnectionMultiplexer"/>
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <param name="multiplexer">StackExchange.Redis ConnectionMultiplexer</param>
 /// <returns></returns>
 public static MessagingBuilder AddRedis(this MessagingBuilder builder, IConnectionMultiplexer multiplexer)
 {
     builder.Services.TryAddSingleton(multiplexer);
     return(builder.AddRedis());
 }
 /// <summary>
 /// Adds both Redis publisher and subscriber
 /// </summary>
 /// <remarks>
 /// These services expect <see cref="IConnectionMultiplexer"/> to be registered
 /// </remarks>
 /// <param name="builder">Messaging builder</param>
 /// <returns></returns>
 public static MessagingBuilder AddRedis(this MessagingBuilder builder)
 {
     builder.AddRedisPublisher();
     builder.AddRedisSubscriber();
     return(builder);
 }
 /// <summary>
 /// Register Kafka raw publisher service
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <returns></returns>
 public static MessagingBuilder AddKafkaPublisher(this MessagingBuilder builder)
 {
     builder.Services.TryAddSingleton(c => c.GetRequiredService <IOptions <KafkaOptions> >().Value);
     builder.AddRawMessagePublisher <KafkaRawMessagePublisher>();
     return(builder);
 }
 /// <summary>
 /// Register Kafka raw subscriber service
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <param name="actionSetup">Setup Kafka options</param>
 /// <returns></returns>
 public static MessagingBuilder AddKafkaSubscriber(this MessagingBuilder builder, Action <KafkaOptions> actionSetup)
 {
     builder.Services.Configure(actionSetup);
     builder.AddKafkaSubscriber();
     return(builder);
 }
 /// <summary>
 /// Adds both Kafka publisher and subscriber
 /// </summary>
 /// <param name="builder">Messaging builder</param>
 /// <returns></returns>
 public static MessagingBuilder AddKafka(this MessagingBuilder builder)
 {
     builder.AddKafkaPublisher();
     builder.AddKafkaSubscriber();
     return(builder);
 }