我有一个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 logs kafka查看其启动情况。
然后,我创建了一个简单的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()
但这似乎并未启用自动主题创建。鉴于我已经将kafka服务器作为docker容器旋转-一旦容器实例启动并运行,如何使用docker命令作为管理容器的方法来管理该容器实例
在kafka站点上运行shell的过程中有一条注释,即“bin / kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test”。
但是,一旦启动,不容易看到一个如何与此容器中的对象进行编辑/交互。
启动后,如何在docker中管理kafka容器实例。否则,您必须添加到docker run命令中以获取在启动时预先创建的主题
在这一点上收到的忠告
最佳答案
错误消息{wills topic=INVALID_TOPIC_EXCEPTION}
表示您正在使用wills topic
作为主题名称。
主题名称不能包含空格。尝试重命名为wills_topic
,它应该可以解决问题。
此正则表达式描述主题名称的合法字符(请检查sources):
val legalChars = "[a-zA-Z0-9\\._\\-]"
使用
docker exec -it <container-name> <command>
启动Kafka管理工具。或者只是在容器docker exec -it <container-name> bash
中打开一个bash(请参阅Docker docs)。
关于docker - 如何使用docker命令将主题添加到正在运行的kafka容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41922625/