[英]How to read all messages from kafka using segmentio/kafka-go?
[英]undefined kafka components for Go 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
在我的 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
)
我已經想通了這一點。 我安裝了 Confluent 的 Kafka Go Client。 說明在這里: 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
謝謝。
顯然沒有導入依賴項,
如果您運行 go build 命令,它將下載必要的依賴項並編譯代碼等
嘗試運行go build ./...
尚未下載依賴項。
您可以使用go get下載軟件包。 或使用
當你構建你的鏡像時,active DOCKER_BUILDKIT=1
,使用-tags musl
和 active CGO_ENABLED
來激活 C 中的 lib 因為 Kafka Go 客戶端是基於 C 庫 librdkafka
在生成文件中:
@DOCKER_BUILDKIT=1 docker build $(BUILD_OPTIONS) .
在 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
我面臨着同樣的問題。
Kafka Go 客戶端基於 C 庫。 因此,設置標志CGO_ENABLED=1
將啟用 go 為 kafka 客戶端使用 C 庫。
希望它可以節省某人的時間。
1.CGO_ENABLED=1 go 構建 xxxx
至於原因,我認為這取決於一些 C 語言庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.