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