这是我正在运行的代码片段:

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? ...不要这样想,因为确切的代码在一台机器上运行,而在另一台机器上运行。感谢您的帮助!

请您参考如下方法:

Message Hub 需要 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


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!