【问题标题】:Kafka Golang Client fails to connect to Message Hub ServiceKafka Golang 客户端无法连接到 Message Hub 服务
【发布时间】:2017-05-18 08:51:15
【问题描述】:

这是我正在运行的代码 sn-p:

err := godotenv.Load()
  if err != nil {
    log.Fatal("Error loading .env file")
  }
broker := os.Getenv("BROKER")
topic := os.Getenv("TOPIC")
username := os.Getenv("USERNAME")
password := os.Getenv("PASSWORD")
calocation := os.Getenv("CALOCATION")

p, err := kafka.NewProducer(&kafka.ConfigMap{
    "metadata.broker.list": broker,
    "security.protocol":    "sasl_ssl",
    "sasl.username":        username,
    "sasl.password":        password,
    "sasl.mechanisms":      "PLAIN",
    "ssl.ca.location":      calocation,
    "api.version.request":  true})

if err != nil {
    fmt.Printf("Failed to create producer: %s\n", err)
    os.Exit(1)
}

基本上,这可以在一台机器上成功运行,但不能在另一台机器上运行。我在不工作的机器上收到的错误如下:

'SSL handshake failed: /SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s23_clnt.c:593: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version:'

不确定此问题是否与此问题有关:Why kafka-python fails to connect to Bluemix message hub service?... 不要这么认为,因为确切的代码在一台机器上运行,而另一台机器上却没有。任何帮助表示赞赏!

【问题讨论】:

    标签: go apache-kafka message-hub


    【解决方案1】:

    消息中心需要 TLS v.1.2。

    从您的错误信息来看,很可能是两台机器上使用的 tls 版本不同。

    librdkafka 提到了属性ssl.cipher.suites https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md 我从来不用为 C 或节点客户端设置它。

    如果您使用的是 Mac,请确保 librdkafka 使用的是随 Homebrew 安装的 openssl 库,而不是 Apple 提供的。 在我的 Mac 上,我在导出后编译 librdkafka CPPFLAGS=-I/usr/local/opt/openssl/include LDFLAGS=-L/usr/local/opt/openssl/lib

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 2012-10-15
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多