Ejemplo n.º 1
0
        public static KafkaProducerConfigurationBuilder UseKafka(this StandardConfigurer <IConsumerImplementation> configurer, IEnumerable <string> bootstrapServers)
        {
            var builder = new KafkaProducerConfigurationBuilder();

            StandardConfigurer.Open(configurer)
            .Register(c =>
            {
                var loggerFactory      = c.Get <ILoggerFactory>();
                var topics             = c.Has <Topics>() ? c.Get <Topics>() : new Topics();
                var group              = c.Get <GroupId>();
                var consumerDispatcher = c.Get <IConsumerDispatcher>();
                var positionManager    = c.Get <IPositionManager>(errorMessage: @"The Kafka consumer needs access to a positions manager, so it can figure out which offsets to pick up from when starting up.");

                return(new KafkaConsumerImplementation(
                           loggerFactory: loggerFactory,
                           address: string.Join("; ", bootstrapServers),
                           topics: topics,
                           group: group.Id,
                           consumerDispatcher: consumerDispatcher,
                           positionManager: positionManager
                           ));
            });

            return(builder);
        }
    public static KafkaProducerConfigurationBuilder UseKafka(this StandardConfigurer <IProducerImplementation> configurer, IEnumerable <string> bootstrapServers)
    {
        var builder = new KafkaProducerConfigurationBuilder();

        StandardConfigurer.Open(configurer)
        .Register(c => RegisterProducerImplementation(bootstrapServers, c, builder));

        return(builder);
    }
Ejemplo n.º 3
0
 public static KafkaProducerConfigurationBuilder WithCertificate(this KafkaProducerConfigurationBuilder builder, string sslCaLocation)
 {
     KafkaProducerConfigurationBuilder.AddCustomizer(builder, config =>
     {
         config.SecurityProtocol = SecurityProtocol.Ssl;
         config.SslCaLocation    = sslCaLocation;
         return(config);
     });
     return(builder);
 }
Ejemplo n.º 4
0
        public static KafkaProducerConfigurationBuilder UseKafka(this StandardConfigurer <IProducerImplementation> configurer, IEnumerable <string> bootstrapServers)
        {
            var builder = new KafkaProducerConfigurationBuilder();

            StandardConfigurer.Open(configurer)
            .Register(c =>
            {
                var loggerFactory = c.Get <ILoggerFactory>();

                return(new KafkaProducerImplementation(loggerFactory, string.Join(";", bootstrapServers)));
            });

            return(builder);
        }
Ejemplo n.º 5
0
    /// <summary>
    /// Configures the Kafka client with good defaults for connecting to Confluent Cloud
    /// </summary>
    public static KafkaProducerConfigurationBuilder WithConfluentCloud(this KafkaProducerConfigurationBuilder builder, string key, string secret)
    {
        KafkaProducerConfigurationBuilder.AddCustomizer(builder, config =>
        {
            config.SaslUsername = key;
            config.SaslPassword = secret;

            config.RequestTimeoutMs = 60000;
            config.SecurityProtocol = SecurityProtocol.SaslSsl;
            config.SaslMechanism    = SaslMechanism.Plain;
            config.EnableSslCertificateVerification = false;
            config.SocketKeepaliveEnable            = true;
            config.LogConnectionClose    = false;
            config.ReconnectBackoffMaxMs = 3333;

            return(config);
        });

        return(builder);
    }
 /// <summary>
 /// Adds a <see cref="ProducerConfig"/> customizer to the builder. This provides the ability to customize and/or completely replace the configuration
 /// used to build the producer
 /// </summary>
 public static void AddCustomizer(KafkaProducerConfigurationBuilder builder, Func <ProducerConfig, ProducerConfig> customizer) => builder._customizers.Add(customizer);
    static IProducerImplementation RegisterProducerImplementation(IEnumerable <string> bootstrapServers, IResolutionContext c, KafkaProducerConfigurationBuilder builder)
    {
        var loggerFactory = c.Get <ILoggerFactory>();

        return(new KafkaProducerImplementation(
                   loggerFactory: loggerFactory,
                   address: string.Join(";", bootstrapServers),
                   configurationCustomizer: builder.Apply
                   ));
    }