apache-kafka Go kafka中未定义的kafka组件

j8ag8udp  于 2022-11-01  发布在  Apache
关注(0)|答案(6)|浏览(177)

我试图安装我的一个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

在我的kafkapublisher.go文件中,我已经导入了Kafka的依赖关系:

import (
        "github.com/confluentinc/confluent-kafka-go/kafka"
        "log"
    )

甚至在我的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
    )

我遵循了以下文档:https://docs.confluent.io/current/clients/go.html
screenshot

txu3uszq

txu3uszq1#

我也面临着同样的问题。
Kafka Go客户端是基于C库的,所以设置CGO_ENABLED=1标志将使Go可以使用Kafka客户端的C库。
希望这能节省一些人的时间。

fae0ux8s

fae0ux8s2#

我已经找到了这个。我安装了Confluent的Kafka Go客户端。说明如下:https://docs.confluent.io/current/clients/go.html#
虽然Windows不支持该库,但我不得不使用虚拟机(Oracle VM Box)来构建和运行我的代码。
在安装Confluent的GO Kafka Client之前,我还需要编译并安装librdkafka:https://github.com/confluentinc/confluent-kafka-go/blame/master/README.md#L133

  • 谢谢-谢谢
mcdcgff0

mcdcgff03#

在构建映像时,使用-tags musl(对于alpine linux,@请参见github.com/confluentinc/confluent-kafka-go)和active CGO_ENABLED激活C语言中的lib,因为Kafka Go客户端基于C库librdkafka
在停靠文件中:

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

注:-标签musl:如果要使用内置librdkafka -标记动态:如果你想用你自己的librdkafka。

bf1o4zei

bf1o4zei4#

显然依赖项没有被导入,
如果您运行go build命令,它将下载必要的依赖项并编译代码等
尝试运行go build ./...

yacmzcpb

yacmzcpb5#

尚未下载依赖项。
您可以使用go get下载软件包。或者使用
1.转到mod下载
1.保持适度整洁

  1. go mod vendor -这将创建一个包含所需依赖项的vendor文件夹
42fyovps

42fyovps6#

如果您有任何问题,请联系我们go-build-ldflags.sh。
提示:在mac & linux操作系统下测试,至于原因,我认为这取决于一些C语言库

相关问题