Groovy 为什么会出现配置异常';应为逗号分隔的列表';创建卡夫卡消费者时出错

Groovy 为什么会出现配置异常';应为逗号分隔的列表';创建卡夫卡消费者时出错,groovy,apache-kafka,kafka-consumer-api,Groovy,Apache Kafka,Kafka Consumer Api,我试图用以下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 K

我试图用以下
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)
Properties-props=新属性()
props.put('bootstrap.servers',“$SERVER\u ADDRESS:$port”)
props.put('key.deserializer',StringDeserializer.name,)
props.put('value.deserializer',StringDeserializer.name)
归还新卡夫卡消费者(道具)
当我执行它时,我得到以下错误:

org.apache.kafka.common.config.ConfigException:无效值 localhost:9092用于配置引导。服务器:应为逗号 单独列表

我的代码基本上与从


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

在这种情况下,props对象希望其值为object类型,而不仅仅是String类型。因此,当
“$SERVER\u ADDRESS:$port”
作为属性添加时,它不会强制转换为字符串,而是存储为GStringImpl

在创建KafkaConsumer之前完成的类型检查知道如何处理字符串属性值,但不知道如何处理GStringImpl,并抛出错误

将该行更改为该行将起作用:

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

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

您使用的是哪个版本的卡夫卡?至少在版本0.10中。bootstrap.servers属性应为字符串数组。您只能将其作为单个字符串传递