public KafkaResponseConsumer(KafkaMessageBus messageBus, RequestResponseSettings requestResponseSettings) : base(messageBus, requestResponseSettings.Group, new List <string> { requestResponseSettings.Topic }) { Start(); }
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"); } }
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) { }