Sobes.tech
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 обеспечивает балансировку нагрузки и гарантирует, что каждое сообщение будет обработано ровно одним потребителем в группе.