Back to questions
Senior
4
Как у вас настроены consumer groups в Kafka? Сколько топиков, откуда читаете?
Companies where asked
А7
Answer from AI
sobes.tech AI
В наших проектах consumer groups в Kafka настроены таким образом, чтобы обеспечить масштабируемое и отказоустойчивое потребление сообщений. Обычно для каждого сервиса создаётся своя consumer group, что позволяет нескольким инстансам сервиса параллельно читать из одного топика, распределяя партиции между собой.
Количество топиков зависит от бизнес-логики, обычно читаем от 1 до 5 топиков, каждый отвечает за отдельный тип событий. Источники топиков — это продюсеры из разных микросервисов или внешних систем.
Пример настройки на Go с использованием библиотеки sarama:
config := sarama.NewConfig()
config.Consumer.Group.Rebalance.Strategy = sarama.BalanceStrategyRange
consumerGroup, err := sarama.NewConsumerGroup(brokers, "my-consumer-group", config)
if err != nil {
log.Fatal(err)
}
topics := []string{"topic1", "topic2"}
// Запуск потребления в горутине
ctx := context.Background()
go func() {
for {
if err := consumerGroup.Consume(ctx, topics, handler); err != nil {
log.Println("Error from consumer:", err)
}
}
}()
Таким образом, consumer group обеспечивает балансировку нагрузки и гарантирует, что каждое сообщение будет обработано ровно одним потребителем в группе.