在springboot中使用Kafka
前言
随着大数据的发展,Kafka变得愈发重要,本文主要介绍Kafka在Springboot中的使用
一、Kafka是什么?
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
二、使用步骤
1.引入依赖
代码如下(示例):
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
2.编写配置文件
代码如下:
spring:
kafka:
bootstrap-servers:
- hadoop101:9092,hadoop102:9092,hadoop103:9092 #集群节点
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer #配置序列化器
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
batch-size: 16384 #每次发送的消息数量
buffer-memory: 33554432
consumer:
group-id: baorongtest #group-id
auto-offset-reset: latest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer #配置反序列化器
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
enable-auto-commit: true
auto-commit-interval: 100
2.生产者代码
@RequestMapping(value = "/kafka")
@Controller
public class KafkaProducerController {
@Autowired
private KafkaTemplate kafkaTemplate;
@RequestMapping(value = "/producer", method = RequestMethod.GET)
public void consume(HttpServletRequest request, HttpServletResponse response) throws IOException {
for (int i = 0; i < 10; i++) {
ListenableFuture<SendResult<Integer, String>> future = kafkaTemplate.send("kafkaMessage", "hello");
future.addCallback(result -> {
System.out.println("发送消息成功");
}, (KafkaFailureCallback<Integer, String>) ex -> {
System.out.println("发送消息失败");
});
}
}
}
3.消费者代码
@Slf4j
@Component
public class RawDataListener {
/**
* 实时获取kafka数据(生产一条,监听生产topic自动消费一条)
* @param record
* @throws IOException
*/
@KafkaListener(topics = "baorong")
public void listen(ConsumerRecord<?, ?> record) throws IOException {
System.out.println("process:"+record.topic()+record.partition()+record.toString());
}
4.测试
可以看到成功运行得到结果
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Kafka在Springboot中的使用,而Springboot在Kafka的实现上做了很多的封装,在使用上会比原生Kafka更为方便,感兴趣的朋友可以去Spingboot的官网阅读文档进行了解。