为什么在创建 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 中,它需要一个字符串数组。您正在传递一个字符串。
我正在尝试使用以下 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 中,它需要一个字符串数组。您正在传递一个字符串。