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

Golang Sarama пример отправки сообщения в топик Kafka через асинхронный продюсер

Вот пример отправки сообщения в Kafka с использованием асинхронного продюсера из библиотеки Sarama:

Пример: Асинхронный Kafka продюсер как объект

Что изменено?

  1. KafkaProducer:
    • Мы обернули логику асинхронного Kafka-продюсера в структуру KafkaProducer, которая инкапсулирует всю работу с Kafka.
    • Эта структура включает:
      • producer: сам асинхронный продюсер (sarama.AsyncProducer).
      • topic: имя топика, в который будут отправляться сообщения.
      • stop: канал для обработки сигналов завершения.
      • wg: sync.WaitGroup для ожидания завершения работы горутин.
  2. Методы:
    • NewKafkaProducer: Конструктор для создания нового продюсера.
    • Start: Запуск асинхронных горутин для обработки успешных сообщений и ошибок.
    • SendMessage: Метод для отправки сообщений в Kafka.
    • Close: Метод для закрытия продюсера и корректного завершения работы.
  3. Основной код:
    • В основном коде создается объект KafkaProducer, который управляет отправкой сообщений и обработкой завершения работы.

Как это работает:

  1. Создание и запуск:
    • Создается объект KafkaProducer с использованием NewKafkaProducer.
    • Метод Start запускает горутины для обработки успешных сообщений и ошибок.
  2. Отправка сообщений:
    • Метод SendMessage отправляет сообщения в Kafka через асинхронный канал producer.Input().
  3. Ожидание завершения:
    • Программа ожидает завершения работы с Kafka через канал stop, который перехватывает системные сигналы (например, os.Interrupt или syscall.SIGTERM).
    • После этого вызывается метод Close, который закрывает канал и ожидает завершения горутин с помощью sync.WaitGroup.

Преимущества такой структуры:

  • Чистота кода: Логика работы с Kafka инкапсулирована в одном объекте.
  • Модульность: Легко управлять отправкой сообщений и их обработкой.
  • Гибкость: Легко менять параметры, такие как топик, брокеры, или методы обработки сообщений.

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

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