1.工具准备
kafka/zookeeper(官网下载)--官网下载速度会受限,需要的可以私聊分享百度云盘资源
1.1zookeeper启动
使用默认配置启动,直接在工具解压包./bin/路径下执行:
zkServer.cmd
1.2kafka启动
使用默认配置启动:
D:\kafka_2.11-1.1.0>.\bin\windows\kafka-server-start.bat .\config\server.properties
2.集成springboot
2.1相关依赖
注意:kafka版本与springboot版本的适配问题,否则可能出现依赖的jar缺失问题
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--以上为web项目基础依赖-->
<!--kafka相关的只依赖一个spring-kafka集成包-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
2.2消息生产者编码(用的是网上的例子)
@Component
@Slf4j
public class KafkaSender {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
private Gson gson = new GsonBuilder().create();
//发送消息方法
public void send() {
Message message = new Message();
message.setId(System.currentTimeMillis());
message.setMsg(UUID.randomUUID().toString());
message.setSendTime(new Date());
log.info("+++++++++++++++++++++ message = {}", gson.toJson(message));
kafkaTemplate.send("zhisheng", gson.toJson(message));
}
}
2.3消息消费者编码
@Component
@Slf4j
public class KafkaReceiver {
@KafkaListener(topics = {"zhisheng"})
public void listen(ConsumerRecord<?, ?> record) {
Optional<?> kafkaMessage = Optional.ofNullable(record.value());
if (kafkaMessage.isPresent()) {
Object message = kafkaMessage.get();
log.info("----------------- record =" + record);
log.info("------------------ message =" + message);
}
}
}
2.4在启动程序中调用消息发送
@SpringBootApplication
public class KafkaTestApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(KafkaTestApplication.class, args);
KafkaSender sender = context.getBean(KafkaSender.class);//容器中获取实例
for (int i = 0; i < 3; i++) {
//调用消息发送类中的消息发送方法
sender.send();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}