Об этом проекте

go-kafka — это модуль Go, опубликованный на github.com/faustbrian/go-kafka под лицензией MIT. Он предоставляет ограниченные и явные строительные блоки для Apache Kafka (producer, consumer, replay, inspection и транзакции) для сервисов на Go и реализован как обертка вокруг franz-go. Заявленная цель дизайна — избежать скрытия результатов доставки, владения жизненным циклом, политики топиков или конфигурации безопасности от вызывающего приложения. В README четко определены область применения и ограничения. Пакет предоставляет строительные блоки с гарантией доставки «at-least-once». Он не делает запись в базу данных и публикацию в Kafka атомарными, не обеспечивает выполнение побочных эффектов потребителя «exactly once» и не управляет конфигурацией топиков или брокеров. Приложения остаются ответственными за согласование неоднозначных результатов публикации и фиксации (commit), которые библиотека оставляет различимыми. Установка выполняется одной командой получения модуля: go get github.com/faustbrian/go-kafka. В документированном быстром старте ProducerConfig проверяется во время загрузки без выделения клиента или подключения к брокерам. Пример устанавливает список брокеров, идентификатор клиента и список разрешенных топиков, вызывает Validate, затем создает продюсера с помощью NewProducer и откладывает Close. Публикация принимает контекст и сообщение, содержащее топик, ключ и байты значения. В README отмечается, что доступ к топикам ограничен через белые списки, копируемые конструктором, поэтому продюсеры могут обращаться только к предварительно одобренным топикам. Раздел гарантий перечисляет несколько конкретных аспектов поведения. Продюсеры сохраняют идемпотентность franz-go, требуют подтверждения от всех синхронизированных реплик (in-sync replicas) и ограничивают количество повторных попыток, буферизацию, прием и доставку. Консьюмеры предоставляют явное подтверждение (acknowledgement), повтор, обработку «мертвых писем» (dead-letter), ребалансировку и поведение при завершении работы. TLS 1.2 или более поздние версии используются по умолчанию, в то время как аутентификация и совместимость с брокерами описываются как явные решения по развертыванию. Перечислены дополнительные модули для интеграции сервисов, OpenTelemetry и Amazon MSK IAM, каждый из которых имеет жизненный цикл, управляемый вызывающей стороной, а не библиотекой. Документация организована в директории docs и включает индекс, матрицу совместимости, реестр проектных решений, документ о гарантиях доставки, руководство по эксплуатации и подробный справочник, охватывающий полные контракты для producer, consumer, replay, inspection и жизненного цикла. README также ссылается на индексированную экосистему Golib и семейство интеграции и перемещения данных для сравнения этого пакета с сопутствующими библиотеками и опциональными адаптерами. Для разработки и выпуска README предписывает запускать golib check для соответствующей директории модуля и make check для изменений в репозитории и релизов. Ожидается, что изменения в бэкенде и управляемых сервисах также пройдут применимые шлюзы интеграции и совместимости. В верхней части README отображаются бейджи статуса непрерывной интеграции и CodeQL, бейдж Go reference, бейдж релиза и версия Go, где бейдж Go указывает версию 1.26.6.