public KafkaResponseConsumer(KafkaMessageBus messageBus, RequestResponseSettings requestResponseSettings)
     : base(messageBus, requestResponseSettings.Group, new List <string> {
     requestResponseSettings.Topic
 })
 {
     Start();
 }
Exemplo n.º 2
0
        public KafkaGroupConsumer(KafkaMessageBus messageBus, string group, Type messageType, ICollection <ConsumerSettings> groupSubscriberSettings)
            : base(messageBus, group, groupSubscriberSettings.Select(x => x.Topic).ToList())
        {
            Log.InfoFormat("Creating consumer for topics {0} and group {1}", string.Join(",", groupSubscriberSettings.Select(x => x.Topic)), group);

            MessageType = messageType;

            _consumerInstancesByTopic = groupSubscriberSettings
                                        .ToDictionary(x => x.Topic, x => new TopicConsumerInstances(x, this, MessageBus));

            Start();
        }
        public KafkaGroupConsumer(KafkaMessageBus messageBus, string group, string[] topics, Func <TopicPartition, IKafkaCommitController, IKafkaTopicPartitionProcessor> processorFactory)
        {
            MessageBus = messageBus ?? throw new ArgumentNullException(nameof(messageBus));
            Group      = group ?? throw new ArgumentNullException(nameof(group));
            Topics     = topics ?? throw new ArgumentNullException(nameof(topics));

            _logger = messageBus.LoggerFactory.CreateLogger <KafkaGroupConsumer>();

            _logger.LogInformation("Creating for group: {0}, topics: {1}", group, string.Join(", ", topics));

            _processors = new SafeDictionaryWrapper <TopicPartition, IKafkaTopicPartitionProcessor>(tp => processorFactory(tp, this));

            _consumer = CreateConsumer(group);
        }
        protected KafkaGroupConsumerBase(KafkaMessageBus messageBus, string group, List <string> topics)
        {
            MessageBus = messageBus;
            Group      = group;
            Topics     = topics;

            Log.InfoFormat("Creating consumer for group: {0}", group);
            Consumer                       = CreateConsumer(group);
            Consumer.OnMessage            += OnMessage;
            Consumer.OnPartitionsAssigned += OnPartitionAssigned;
            Consumer.OnPartitionsRevoked  += OnPartitionRevoked;
            Consumer.OnPartitionEOF       += OnPartitionEndReached;
            Consumer.OnOffsetsCommitted   += OnOffsetsCommitted;
            Consumer.OnStatistics         += OnStatistics;
        }
        public TopicConsumerInstances(ConsumerSettings settings, KafkaGroupConsumer groupConsumer, KafkaMessageBus messageBus)
        {
            _settings      = settings;
            _messageBus    = messageBus;
            _groupConsumer = groupConsumer;

            _consumerInstanceOnHandleMethod = settings.ConsumerType.GetMethod("OnHandle", new[] { groupConsumer.MessageType, typeof(string) });
            _consumerInstances = ResolveInstances(settings, messageBus);
            _consumerQueue     = new BufferBlock <object>();
            _consumerInstances.ForEach(x => _consumerQueue.Post(x));

            if (_settings.ConsumerMode == ConsumerMode.RequestResponse)
            {
                var taskType = typeof(Task <>).MakeGenericType(_settings.ResponseType);
                _taskResult = taskType.GetProperty("Result");
            }
        }
Exemplo n.º 6
0
        public KafkaGroupConsumer(KafkaMessageBus messageBus, string group, string[] topics, Func <TopicPartition, IKafkaCommitController, IKafkaTopicPartitionProcessor> processorFactory)
        {
            Log.InfoFormat(CultureInfo.InvariantCulture, "Creating for group: {0}, topics: {1}", group, string.Join(", ", topics));

            MessageBus = messageBus;
            Group      = group;
            Topics     = topics;

            _processors = new SafeDictionaryWrapper <TopicPartition, IKafkaTopicPartitionProcessor>(tp => processorFactory(tp, this));

            _consumer                       = CreateConsumer(group);
            _consumer.OnMessage            += OnMessage;
            _consumer.OnPartitionsAssigned += OnPartitionAssigned;
            _consumer.OnPartitionsRevoked  += OnPartitionRevoked;
            _consumer.OnPartitionEOF       += OnPartitionEndReached;
            _consumer.OnOffsetsCommitted   += OnOffsetsCommitted;
            _consumer.OnStatistics         += OnStatistics;
        }
 public KafkaResponseConsumer(KafkaMessageBus messageBus)
     : this(messageBus, messageBus.Settings.RequestResponse)
 {
 }