1、kafka下载
在官网下载http://kafka.apache.org/downloads 我下载的是kafka_2.12-2.7.0.tgz版本。
2、windows启动kafka命令
下载成功后解压到电脑指定目录,我解压的目录是 D:\work\software\kafka_2.12-2.7.0。
里面自带有zookeeper、以及配置文件 server.properties(里面有地址、ip等配置信息),本地简单版本都默认就行了。
运行cmd进入到D:\work\software\kafka_2.12-2.7.0目录,然后执行以下命令。注意启动zookeeper后不要关闭窗口,在新开一个cmd窗口启动kafka
1、启动zookeeper: bin\windows\zookeeper-server-start.bat config\zookeeper.properties
2、启动kafka:bin\windows\kafka-server-start.bat config\server.properties
3、创建topic:bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test (test是名字,可自行定义)
4、查看topic:bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
5、启动生产端:bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test (新开窗口方便测试)
6、启动消费端:bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test--from-beginning (新开窗口方便测试)
7、本地测试;在生产端输入信息,消费端都能收到。
3、spring boot集成kafka生产端
1、创建springboot项目,引入kafka。下面是maven,spring boot版本用的是2.3.1.RELEASE
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
2、配置yml
kafka:
bootstrap-servers: 127.0.0.1:9092
listener:
missing-topics-fatal: false
consumer:
enable-auto-commit: true
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
retries: 0
properties:
linger:
ms=0:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
3、编写测试生产端
@Autowired
private KafkaTemplate<String, Object> kafkaTemplate;
@GetMapping(value = "/kafka/{name}")
@ResponseBody
public CoreResData kafka(@PathVariable("name") String name) {
LOGGER.debug("进入kafka测试." + name);
kafkaTemplate.send("test", "my is:" + name).addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
@Override
public void onFailure(Throwable throwable) {
LOGGER.info("发送失败.");
throwable.getMessage();
}
@Override
public void onSuccess(SendResult<String, Object> stringObjectSendResult) {
LOGGER.info(stringObjectSendResult.getProducerRecord().value().toString());
LOGGER.info("发送成功..");
}
});
return CoreResData.resSuccess();
}
在浏览器输入对应的地址后,消费端就能收到信息。