如何使用docker命令将主题添加到正在运行的kafka容器?
我有一个卡夫卡容器开始使用以下
docker run --detach --name kafka -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=192.168.1.89 --env ADVERVTISED_PORT=9092 --env AUTO.CREATE.TOPICS.ENABLE spotify/kafka
我可以使用docker日志卡夫卡看到它的开始。
然后,我创build了一个简单的groovy脚本客户端生产者写入一些条目,但是这不断错误
> Sending metadata request {topics=[wills topic]} to node 0 > Error while fetching metadata with correlation id 1 : {wills topic=INVALID_TOPIC_EXCEPTION} ....
我在客户端代码中设置了以下属性
Properties props = new Properties() props.put("bootstrap.servers", "192.168.1.89:9092" ) //Assign localhost id and external port (9092 int) props.put("acks", "all") //Set acknowledgements for producer requests. props.put("retries", 0) //If the request fails, the producer can automatically retry, props.put("batch.size", 16384) //Specify buffer size in config props.put("linger.ms", 1) //Reduce the no of requests less than 0 props.put("buffer.memory", 33554432) //The buffer.memory controls the total amount of memory available to the producer for buffering. props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer") props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer") props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") props.put ("auto.create.topics.enable", true) //enable auto topic creation producer = new org.apache.kafka.clients.producer.KafkaProducer<String, String>(props) for(int i = 0; i < 10; i++) { producer.send(new ProducerRecord<String, String>(topicName, Integer.toString(i), Integer.toString(i))) } println("Message sent successfully") producer.close()
但是这似乎并不能启用自动创build主题。 鉴于我已经将kafka服务器转换为docker容器 – 如何使用docker命令作为与容器对话的方式来pipe理容器实例
在运行shell命令行的kafka网站上有一个注释“bin / kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test”
但一旦它在容器中一旦编辑/交互,就不容易了。
如何在Docker启动后pipe理kafka容器实例 否则,你必须添加到docker运行命令来获取启动时预先创build的主题
在这一点上得到了很好的build议
错误消息{wills topic=INVALID_TOPIC_EXCEPTION}
表示您正在使用wills topic
作为主题名称。
主题名称不能包含空格。 尝试重命名为wills_topic
,它应该解决这个问题。
这个正则expression式描述主题名称(检查源 )的合法字符:
val legalChars = "[a-zA-Z0-9\\._\\-]"
使用docker exec -it <container-name> <command>
启动Kafkapipe理工具。 或者在你的容器docker exec -it <container-name> bash
打开一个bash(参见Docker文档 )。