Example #1
0
        /// <summary>
        ///     Adds the specified batch handler
        /// </summary>
        /// <typeparam name="T">The type that the handler handles</typeparam>
        /// <typeparam name="TBatchHandler">The type of the batch handler to add</typeparam>
        /// <param name="messagingBuilder">The OpenMessageBuilder</param>
        /// <returns>The OpenMessageBuilder</returns>
        public static IMessagingBuilder ConfigureBatchHandler <T, TBatchHandler>(this IMessagingBuilder messagingBuilder)
            where TBatchHandler : class, IBatchHandler <T>
        {
            messagingBuilder.Services.AddScoped <IBatchHandler <T>, TBatchHandler>();

            return(messagingBuilder);
        }
Example #2
0
        public static IKafkaMessagingBuilder WithKafkaTransport(this IMessagingBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (builder.Container == null)
            {
                throw new ArgumentNullException(nameof(builder.Container));
            }

            if (builder.HasProducer)
            {
                builder.Container.RegisterSingleton <SchemaSerializerProvider>();
                builder.Container.AppendToCollection(typeof(ISchemaSerializerFactory), typeof(DefaultSchemaSerdesFactory));
                builder.Container.Register(typeof(ISchemaProducerFactory), typeof(SchemaProducerFactory), Lifestyle.Singleton);
                builder.Container.AppendToCollection(typeof(IProducer), typeof(KafkaProducer));
            }

            if (builder.HasConsumer)
            {
                builder.Container.RegisterSingleton <IConsumerService, KafkaConsumerService>();
                builder.Container.RegisterSingleton <SchemaDeserializerProvider>();
                builder.Container.AppendToCollection(typeof(ISchemaDeserializerFactory), typeof(DefaultSchemaSerdesFactory));
                builder.Container.Register(typeof(ISchemaConsumerFactory), typeof(SchemaConsumerFactory), Lifestyle.Singleton);
            }
            return(new KafkaMessagingBuilder(builder));
        }
Example #3
0
        /// <summary>
        ///     Adds the ServiceStackJson serializer
        /// </summary>
        /// <param name="messagingBuilder">The host to configure</param>
        /// <returns>The modified builder</returns>
        public static IMessagingBuilder ConfigureServiceStackJsonSerializer(this IMessagingBuilder messagingBuilder)
        {
            messagingBuilder.Services.TryAddSingleton <ServiceStackSerializer>();

            messagingBuilder.Services.AddSerialization()
            .AddSingleton <ISerializer>(sp => sp.GetRequiredService <ServiceStackSerializer>());

            return(messagingBuilder);
        }
Example #4
0
        /// <summary>
        ///     Configures a default pipeline
        /// </summary>
        /// <param name="messagingBuilder">The OpenMessage builder</param>
        /// <typeparam name="T">The type that the handler handles</typeparam>
        public static void TryConfigureDefaultPipeline <T>(this IMessagingBuilder messagingBuilder)
        {
            if (messagingBuilder.Services.Any(x => x.ServiceType == typeof(IPipelineBuilder <T>)))
            {
                return;
            }

            messagingBuilder.Services.TryAddSingleton <IPipelineBuilder <T> >(new PipelineBuilder <T>(messagingBuilder).UseDefaultMiddleware());
        }
Example #5
0
        /// <summary>
        ///     Adds the Protobuf deserializer
        /// </summary>
        /// <param name="messagingBuilder">The host to configure</param>
        /// <returns>The modified builder</returns>
        public static IMessagingBuilder ConfigureProtobufDeserializer(this IMessagingBuilder messagingBuilder)
        {
            messagingBuilder.Services.TryAddSingleton <ProtobufSerializer>();

            messagingBuilder.Services.AddSerialization()
            .AddSingleton <IDeserializer>(sp => sp.GetRequiredService <ProtobufSerializer>());

            return(messagingBuilder);
        }
Example #6
0
        /// <summary>
        ///     Adds both the JsonDotNet serializer &amp; deserializer
        /// </summary>
        /// <param name="builder">The service collection to modify</param>
        /// <param name="serializerConfigurator">Configure the serializer options</param>
        /// <param name="deserializerConfigurator">Configure the deserializer options</param>
        /// <returns>The modified service collection</returns>
        public static IMessagingBuilder ConfigureJsonDotNet(this IMessagingBuilder builder, Action <JsonSerializerSettings>?serializerConfigurator = null, Action <JsonSerializerSettings>?deserializerConfigurator = null)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.ConfigureJsonDotNetDeserializer(deserializerConfigurator)
                   .ConfigureJsonDotNetSerializer(serializerConfigurator));
        }
Example #7
0
        public static IMessagingBuilder WithHttpTransport(this IMessagingBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (builder.Container == null)
            {
                throw new ArgumentNullException(nameof(builder.Container));
            }

            builder.Container.AppendToCollection(typeof(IProducer), typeof(HttpProducer));

            return(builder);
        }
Example #8
0
        public static IMessagingBuilder Configure(this IMessagingBuilder messagingBuilder, Action <MessagingOptions> configuration)
        {
            if (messagingBuilder == null)
            {
                throw new ArgumentNullException(nameof(messagingBuilder));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            messagingBuilder.Services.Configure(configuration);

            return(messagingBuilder);
        }
Example #9
0
        /// <summary>
        ///     Adds the JsonDotNet serializer only.
        /// </summary>
        /// <param name="builder">The service collection to modify</param>
        /// <param name="configurator">Configure the serializer options</param>
        /// <returns>The modified service collection</returns>
        public static IMessagingBuilder ConfigureJsonDotNetSerializer(this IMessagingBuilder builder, Action <JsonSerializerSettings>?configurator = null)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.AddSerialization()
            .AddSerializer <JsonDotNetSerializer>()
            .Configure <JsonSerializerSettings>(SerializationConstants.SerializerSettings, settings =>
            {
                settings.NullValueHandling = NullValueHandling.Ignore;
                configurator?.Invoke(settings);
            });;

            return(builder);
        }
Example #10
0
 /// <summary>
 ///     ctor
 /// </summary>
 public Builder(IMessagingBuilder hostBuilder) => HostBuilder = hostBuilder ?? throw new ArgumentNullException(nameof(hostBuilder));
Example #11
0
 /// <summary>
 ///     Adds a kafka dispatcher
 /// </summary>
 /// <param name="messagingBuilder">The host builder</param>
 /// <param name="options">Options for the dispatcher</param>
 /// <typeparam name="T">The type to dispatch</typeparam>
 /// <returns>The modified builder</returns>
 public static IMessagingBuilder ConfigureKafkaDispatcher <T>(this IMessagingBuilder messagingBuilder, Action <KafkaOptions <T> >?options = null)
 {
     if (options is {})
Example #12
0
 /// <summary>
 ///     Adds a kafka consumer
 /// </summary>
 /// <param name="messagingBuilder">The host builder</param>
 /// <typeparam name="TKey">The type of the key</typeparam>
 /// <typeparam name="TValue">The type of the message</typeparam>
 /// <returns>The modified builder</returns>
 public static IKafkaConsumerBuilder <TKey, TValue> ConfigureKafkaConsumer <TKey, TValue>(this IMessagingBuilder messagingBuilder) => new KafkaConsumerBuilder <TKey, TValue>(messagingBuilder);
Example #13
0
 /// <summary>
 ///     Adds a kafka consumer
 /// </summary>
 /// <param name="messagingBuilder">The host builder</param>
 /// <typeparam name="T">The type to consume</typeparam>
 /// <returns>The modified builder</returns>
 public static IKafkaConsumerBuilder <string, T> ConfigureKafkaConsumer <T>(this IMessagingBuilder messagingBuilder) => messagingBuilder.ConfigureKafkaConsumer <string, T>();
Example #14
0
 /// <summary>
 ///     Adds the Wire serializer &amp; deserializer
 /// </summary>
 /// <param name="messagingBuilder">The host to configure</param>
 /// <returns>The modified builder</returns>
 public static IMessagingBuilder ConfigureWire(this IMessagingBuilder messagingBuilder) => messagingBuilder.ConfigureWireDeserializer()
 .ConfigureWireSerializer();
Example #15
0
        /// <summary>
        ///     Adds the specified handler
        /// </summary>
        /// <param name="messagingBuilder">The OpenMessage builder</param>
        /// <param name="instance">The handler to use</param>
        /// <typeparam name="T">The type that the handler handles</typeparam>
        /// <returns>The OpenMessageBuilder</returns>
        public static IMessagingBuilder ConfigureHandler <T>(this IMessagingBuilder messagingBuilder, IHandler <T> instance)
        {
            messagingBuilder.Services.AddSingleton(instance);

            return(messagingBuilder);
        }
Example #16
0
 public PipelineBuilder(IMessagingBuilder builder)
 {
     _builder = builder;
     _builder.Services.AddSingleton <IPipelineBuilder <T> >(this);
 }
Example #17
0
 /// <summary>
 ///     Adds the specified handler
 /// </summary>
 /// <param name="messagingBuilder">The OpenMessage builder</param>
 /// <param name="action">The implementation of the handler</param>
 /// <typeparam name="T">The type that the handler handles</typeparam>
 /// <returns>The OpenMessageBuilder</returns>
 public static IMessagingBuilder ConfigureHandler <T>(this IMessagingBuilder messagingBuilder, Func <Message <T>, Task> action)
 {
     messagingBuilder.Services.AddSingleton <IHandler <T> >(sp => ActivatorUtilities.CreateInstance <ActionHandler <T> >(sp, action));
     return(messagingBuilder);
 }
Example #18
0
 /// <summary>
 ///     Configures the pipeline for a specified type.
 /// </summary>
 /// <param name="messagingBuilder">The OpenMessage builder</param>
 /// <param name="configurator">The configuration to use</param>
 /// <typeparam name="T">The type that the handler handles</typeparam>
 /// <returns>The OpenMessage builder</returns>
 public static IPipelineBuilder <T> ConfigurePipeline <T>(this IMessagingBuilder messagingBuilder, Action <PipelineOptions <T> >?configurator = null)
 {
     return(ConfigurePipeline <T>(messagingBuilder, (_, options) => configurator?.Invoke(options)));
 }
Example #19
0
 /// <summary>
 ///     Configures the pipeline for a specified type.
 /// </summary>
 /// <param name="messagingBuilder">The OpenMessage builder</param>
 /// <param name="configurator">The configuration to use</param>
 /// <typeparam name="T">The type that the handler handles</typeparam>
 /// <returns>The OpenMessage builder</returns>
 public static IPipelineBuilder <T> ConfigurePipeline <T>(this IMessagingBuilder messagingBuilder, Action <HostBuilderContext, PipelineOptions <T> > configurator)
 {
     if (configurator is {})
Example #20
0
 public KafkaMessagingBuilder(IMessagingBuilder builder)
 {
     Container   = builder.Container;
     HasConsumer = builder.HasConsumer;
     HasProducer = builder.HasProducer;
 }
Example #21
0
 /// <summary>
 ///     Adds the Jil serializer &amp; deserializer
 /// </summary>
 /// <param name="messagingBuilder">The host to configure</param>
 /// <returns>The modified builder</returns>
 public static IMessagingBuilder ConfigureJil(this IMessagingBuilder messagingBuilder) => messagingBuilder.ConfigureJilDeserializer()
 .ConfigureJilSerializer();
Example #22
0
 public SqsConsumerBuilder(IMessagingBuilder hostBuilder)
     : base(hostBuilder)
 {
 }
Example #23
0
 public SqsDispatcherBuilder(IMessagingBuilder hostBuilder)
     : base(hostBuilder)
 {
 }
Example #24
0
 /// <summary>
 ///     Adds an InMemory consumer and dispatcher
 /// </summary>
 /// <param name="builder">The current host builder</param>
 /// <typeparam name="T">The type to handle</typeparam>
 /// <returns>An instance of <see cref="IMemoryProviderBuilder{T}" /></returns>
 public static IMemoryProviderBuilder <T> ConfigureMemory <T>(this IMessagingBuilder builder) => new MemoryProviderBuilder <T>(builder);
Example #25
0
 /// <summary>
 ///     Adds the ServiceStackJson serializer &amp; deserializer
 /// </summary>
 /// <param name="messagingBuilder">The host to configure</param>
 /// <returns>The modified builder</returns>
 public static IMessagingBuilder ConfigureServiceStackJson(this IMessagingBuilder messagingBuilder) => messagingBuilder.ConfigureServiceStackJsonDeserializer()
 .ConfigureServiceStackJsonSerializer();
Example #26
0
 /// <summary>
 ///     Returns an SQS consumer builder
 /// </summary>
 /// <param name="messagingBuilder">The host the consumer belongs to</param>
 /// <typeparam name="T">The type of message to consume</typeparam>
 /// <returns>An SQS consumer builder</returns>
 public static ISqsConsumerBuilder <T> ConfigureSqsConsumer <T>(this IMessagingBuilder messagingBuilder) => new SqsConsumerBuilder <T>(messagingBuilder);
Example #27
0
 /// <summary>
 ///     Returns an SQS dispatcher builder
 /// </summary>
 /// <param name="messagingBuilder">The host the dispatcher belongs to</param>
 /// <typeparam name="T">The type of message to dispatch</typeparam>
 /// <returns>An SQS dispatcher builder</returns>
 public static ISqsDispatcherBuilder <T> ConfigureSqsDispatcher <T>(this IMessagingBuilder messagingBuilder) => new SqsDispatcherBuilder <T>(messagingBuilder);
Example #28
0
 /// <summary>
 ///     Adds the Protobuf serializer &amp; deserializer
 /// </summary>
 /// <param name="messagingBuilder">The host to configure</param>
 /// <returns>The modified builder</returns>
 public static IMessagingBuilder ConfigureProtobuf(this IMessagingBuilder messagingBuilder) => messagingBuilder.ConfigureProtobufDeserializer()
 .ConfigureProtobufSerializer();
Example #29
0
 public KafkaConsumerBuilder(IMessagingBuilder hostBuilder)
     : base(hostBuilder)
 {
 }
Example #30
0
 /// <summary>
 ///     Adds a kafka consumer
 /// </summary>
 /// <param name="messagingBuilder">The host builder</param>
 /// <typeparam name="TKey">The type of the key</typeparam>
 /// <typeparam name="TValue">The type of the message</typeparam>
 /// <returns>The modified builder</returns>
 public static IKafkaConsumerBuilder <TKey, TValue> ConfigureKafkaConsumer <TKey, TValue>(this IMessagingBuilder messagingBuilder) where TKey : class where TValue : class => new KafkaConsumerBuilder <TKey, TValue>(messagingBuilder);