IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Golang Sarama и асинхронная работа с Kafka

Вот пример кода на Go, который демонстрирует использование sarama.AsyncProducer для отправки сообщений в Kafka:

Пояснение:

  1. Конфигурация продюсера (sarama.NewConfig):
    • RequiredAcks: определяет, сколько подтверждений нужно получить от брокеров (WaitForAll ждет подтверждения от всех ISR).
    • Retry.Max: максимальное число повторных попыток при ошибке отправки.
    • Return.Successes и Return.Errors: включают каналы для обработки успешных и неуспешных отправок.
  2. Создание AsyncProducer: Используется sarama.NewAsyncProducer, который позволяет отправлять сообщения асинхронно через канал producer.Input().
  3. Обработка результатов: В отдельной горутине обрабатываются успешные отправки (producer.Successes()) и ошибки (producer.Errors()).
  4. Отправка сообщений: Сообщения отправляются через канал producer.Input(). Каждое сообщение включает:
    • Topic: название топика.
    • Value: данные сообщения (здесь используется sarama.StringEncoder).
  5. Завершение работы: Обработка сигнала os.Interrupt позволяет завершить работу продюсера корректно.

Результат работы:

При успешной отправке сообщений в Kafka вы увидите в консоли что-то вроде:

Если возникнут ошибки, они будут выведены в консоль.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *