Go kafka 的未定义 kafka 组件

Jed*_*ina 7 go apache-kafka

我试图安装我的 go 文件之一。但我遇到了这个错误

C:\mygoproject>go install kafkapublisher.go

\#command-line-arguments
.\kafkapublisher.go:8:65: undefined: kafka.Message

.\kafkapublisher.go:10:19: undefined: kafka.NewProducer

.\kafkapublisher.go:10:38: undefined: kafka.ConfigMap

.\kafkapublisher.go:17:31: undefined: kafka.Event

.\kafkapublisher.go:19:26: undefined: kafka.Message
Run Code Online (Sandbox Code Playgroud)

在我的 kafkapublisher.go 文件中,我已经导入了 kafka 依赖项:

    import (
        "github.com/confluentinc/confluent-kafka-go/kafka"
        "log"
    )
Run Code Online (Sandbox Code Playgroud)

即使在我的go.mod档案中

    module mymodule
    
    go 1.12
    
    require (
        github.com/aws/aws-lambda-go v1.15.0
        github.com/confluentinc/confluent-kafka-go v1.3.0
    )
Run Code Online (Sandbox Code Playgroud)

我遵循了这个文档: https: //docs.confluence.io/current/clients/go.html

截屏

小智 12

我面临着同样的问题。

Kafka Go客户端基于C库。因此,设置标志CGO_ENABLED=1将使 go 能够为 kafka 客户端使用 C 库。

希望它可以节省某人的时间。


Adr*_*hia 5

当您构建镜像时,请使用-tags musl(对于 alpine linux,@see github.com/confluenceinc/confluence-kafka-go)和 activeCGO_ENABLED来激活 C 中的 lib,因为 Kafka Go 客户端基于 C 库 librdkafka

在 dockerfile 中:

FROM golang:1.16-alpine as builder

ARG GIT_TAG_NAME

RUN apk --no-cache update && \
apk --no-cache add git gcc libc-dev

# Kafka Go client is based on the C library librdkafka
ENV CGO_ENABLED 1
ENV GOFLAGS -mod=vendor
ENV GOOS=linux
ENV GOARCH=amd64

RUN export GO111MODULE=on

RUN go build -tags musl -ldflags "-s -w -X main.Version=$GIT_TAG_NAME" -o bin/main ./cmd/main
Run Code Online (Sandbox Code Playgroud)

注意: -tags musl:如果你想使用内置的 librdkafka -tagsdynamic 如果你想使用你自己的 librdkafka。


Hem*_*lli -1

显然没有导入依赖项,

如果您运行 go build 命令,它将下载必要的依赖项并编译代码等

尝试跑步go build ./...