À propos du projet

go-kafka est un module Go publié sur github.com/faustbrian/go-kafka sous licence MIT. Il fournit des blocs de construction bornés et explicites pour producteurs, consommateurs, relecture, inspection et transactions Apache Kafka destinés aux services Go, et est implémenté comme un wrapper autour de franz-go. L'intention de conception affichée est d'éviter de masquer les issues de livraison, la propriété du cycle de vie, la politique de topics ou la configuration de sécurité à l'application appelante. Le README est explicite quant à la portée et aux limites. Le package fournit des blocs au moins une fois. Il ne rend pas atomiques les écritures base de données et les publications Kafka, ne garantit pas le exactement une fois côté consommateur, et ne détient pas la configuration des topics ou brokers. Les applications restent responsables de la réconciliation des issues ambiguës de publication et de commit, que la bibliothèque conserve distinguables. L'installation se fait par un simple fetch de module : go get github.com/faustbrian/go-kafka. Dans le quick start documenté, un ProducerConfig est validé lors du bootstrap sans allouer de client ni établir de connexion aux brokers. L'exemple définit une liste de brokers, un identifiant client et une liste de topics autorisés, appelle Validate, puis construit un producteur avec NewProducer et defer Close. La publication prend un contexte et un message portant les bytes de topic, clé et valeur. Le README note que l'accès aux topics est restreint via des allowlists copiées au constructeur, donc les producteurs ne peuvent adresser que des topics pré-approuvés. La section garanties liste plusieurs comportements concrets. Les producteurs conservent l'idempotence de franz-go, exigent l'acquittement de tous les replicas in-sync, et bornent les retry, bufferisation, admission et livraison. Les consommateurs exposent un acquittement explicite, retry, dead-letter, rebalance et comportement d'arrêt. TLS 1.2 ou supérieur est la valeur par défaut, tandis que l'authentification et la compatibilité broker sont décrites comme des décisions de déploiement explicites. Des modules optionnels pour l'intégration de service, OpenTelemetry et Amazon MSK IAM sont listés, chacun avec un cycle de vie géré par l'appelant plutôt que par la bibliothèque. La documentation est organisée dans un répertoire docs, avec un index, une matrice de compatibilité, un registre de décisions de spécification, un document sur les garanties de livraison, un guide opérationnel et une référence détaillée couvrant les contrats complets de producteur, consommateur, relecture, inspection et cycle de vie. Le README pointe également vers un index écosystème Golib versionné et sa famille d'intégration et mouvement de données pour comparer ce package avec des bibliothèques compagnes et adaptateurs optionnels. Pour le développement et les releases, le README indique d'exécuter golib check contre le répertoire du module affecté, et make check pour les changements et releases à l'échelle du dépôt. Les changements backend et services managés doivent passer les gates d'intégration et d'interopérabilité applicables. Des badges de statut CI/CD et CodeQL, un badge de référence Go, un badge de release et la version Go sont affichés en haut du README, le badge Go indiquant la version 1.26.6.