Example #1
0
 public KafkaTopicMessageConsumer(ILogger <KafkaTopicMessageConsumer> logger,
                                  IKafkaConsumerBuilder kafkaConsumerBuilder, IServiceProvider serviceProvider)
 {
     _logger = logger;
     _kafkaConsumerBuilder = kafkaConsumerBuilder;
     _serviceProvider      = serviceProvider;
 }
 /// <summary>
 /// 添加监听
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="onMessageRecieved"></param>
 /// <returns></returns>
 public static IKafkaConsumerBuilder AddListener(this IKafkaConsumerBuilder builder, Action <RecieveResult> onMessageRecieved)
 {
     return(builder.AddListener((_, result) =>
     {
         onMessageRecieved?.Invoke(result);
     }));
 }
Example #3
0
 public KafkaTopicMessageConsumer(ILogger <KafkaTopicMessageConsumer <TAvro, TResponse> > logger,
                                  IKafkaConsumerBuilder <TAvro> kafkaConsumerBuilder,
                                  IServiceProvider serviceProvider,
                                  IMapper mapper)
 {
     _logger = logger;
     _kafkaConsumerBuilder = kafkaConsumerBuilder;
     _serviceProvider      = serviceProvider;
     _mapper = mapper;
 }
        /// <summary>
        /// 添加自定义监听
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="listenerType"></param>
        /// <returns></returns>
        public static IKafkaConsumerBuilder AddListener(this IKafkaConsumerBuilder builder, Type listenerType)
        {
            if (!typeof(IKafkaConsumerListener).IsAssignableFrom(listenerType) || !listenerType.IsClass || listenerType.IsAbstract)
            {
                throw new ArgumentException($"the listener type must be implement {nameof(IKafkaConsumerListener)} and none abstract class", nameof(listenerType));
            }

            builder.Services.AddTransient(listenerType);
            return(builder.AddListener((serviceProvider, result) =>
            {
                var listenner = serviceProvider.GetService(listenerType) as IKafkaConsumerListener;
                listenner.ConsumeAsync(result).Wait();
            }));
        }
 /// <summary>
 /// 添加自定义监听
 /// </summary>
 /// <param name="builder"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static IKafkaConsumerBuilder AddListener <T>(this IKafkaConsumerBuilder builder) where T : class, IKafkaConsumerListener
 {
     return(builder.AddListener(typeof(T)));
 }
Example #6
0
 public KafkaConsumerWrapper()
 {
     PoolTimeout     = TimeSpan.FromSeconds(1);
     ConsumerBuilder = new KafkaConsumerBuilder();
 }