为什么在创建 KafkaConsumer 时出现 ConfigException 'Expected a comma separated list' 错误

Why am I getting a ConfigException 'Expected a comma separated list' error when creating a KafkaConsumer

我正在尝试使用以下 Groovy 代码创建 KafkaConsumer

Properties props = new Properties()
props.put('bootstrap.servers', "$SERVER_ADDRESS:$port")
props.put('key.deserializer', StringDeserializer.name,)
props.put('value.deserializer', StringDeserializer.name)
return new KafkaConsumer<String, String>(props)

当我执行它时,出现以下错误:

org.apache.kafka.common.config.ConfigException: Invalid value localhost:9092 for configuration bootstrap.servers: Expected a comma separated list.

我的代码基本上与 here

中创建消费者的示例相匹配

为什么我的版本不起作用?

在这种情况下,props 对象期望其值是 Object 类型,而不仅仅是 String 类型。因此,当 "$SERVER_ADDRESS:$port" 作为 属性 添加时,它不会被强制转换为 String,而是存储为 GStringImpl。

在创建 KafkaConsumer 之前完成的类型检查知道如何处理 String 属性 值而不是 GStringImpl 并抛出错误。

将行更改为这样有效:

props.put('bootstrap.servers', "$SERVER_ADDRESS:$port".toString())

在使用 KafkaConsumer 或 KafkaProducer 的版本 0.10.0 中,它需要一个字符串数组。您正在传递一个字符串。