以下是“Docker部署Kafka的方法步骤”的完整攻略,并附带了两条示例说明:
准备工作
- 安装Docker;
- 下载Kafka的镜像文件,可通过Docker官方提供的Kafka镜像文件或第三方提供的镜像文件。
创建Kafka容器并启动
docker run --name kafka -p 9092:9092 -d --env ADVERTISED_HOST=$(docker-machine ip $(docker-machine active)) --env ADVERTISED_PORT=9092 spotify/kafka
- --name:指定容器的名称;
- -p:将宿主机的端口映射到容器的端口;
- --env:设置环境变量;
- -d:后台运行该容器;
- spotify/kafka:Kafka的镜像名称。
配置Kafka
使用kafka-topics.sh工具创建topic:
docker run --rm --link kafka spotify/kafka /opt/kafka/bin/kafka-topics.sh --create --topic my_topic --partitions 1 --replication-factor 1 --zookeeper $ZK --if-not-exists
- --rm:容器退出后立即将其删除;
- --link:将两个容器联系起来;
- /opt/kafka/bin/kafka-topics.sh:kafka-topics.sh工具的路径;
- --create:创建topic;
- --if-not-exists:避免重复创建topic。
示例一:使用Java连接Kafka服务
- 引入Maven依赖
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.4.1</version>
</dependency>
- 编写Java代码
Properties props = new Properties();
props.put("bootstrap.servers", "kafka:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<String, String>(props);
producer.send(new ProducerRecord<String, String>("my_topic", "key", "value"));
producer.close();
示例二:使用Node.js连接Kafka服务
- 安装kafka-node依赖
npm install kafka-node
- 编写Node.js代码
var kafka = require('kafka-node'),
Producer = kafka.Producer,
client = new kafka.Client("kafka:2181"),
producer = new Producer(client);
producer.on('ready', function () {
producer.send([
{
topic: 'my_topic',
messages: [
JSON.stringify({
key: 'key',
value: 'value',
})
]
}
], function (err, result) {
console.log(err || result);
process.exit();
});
});
总结
以上就是使用Docker部署Kafka的方法步骤以及两条示例说明。在使用Docker运行Kafka服务和开发应用时,我们可以深刻体会到Docker的强大和便利性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker部署kafka的方法步骤 - Python技术站