在springboot中使用Kafka

在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的官网阅读文档进行了解。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot使用Kafka,你可以参考以下步骤: 1. 首先,你需要在Spring Boot项目添加Kafka的依赖。可以在项目的pom.xml文件添加以下代码: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 2. 接下来,你需要在Spring Boot的配置文件配置Kafka的相关属性,例如Kafka服务器的地址和端口号等。可以在application.properties或application.yml文件添加以下配置: ```properties spring.kafka.bootstrap-servers=your-kafka-server:9092 ``` 3. 然后,你可以创建一个Kafka生产者或消费者的Bean。可以使用Spring的注解来自动配置生产者或消费者。例如,对于生产者,你可以添加`@EnableKafka`注解,并创建一个`KafkaTemplate`的Bean。对于消费者,你可以添加`@KafkaListener`注解,并创建一个处理消息的方法。以下是一个简单的示例: ```java @Configuration @EnableKafka public class KafkaConfig { @Value("${spring.kafka.bootstrap-servers}") private String bootstrapServers; @Bean public ProducerFactory<String, String> producerFactory() { Map<String, Object> configProps = new HashMap<>(); configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); return new DefaultKafkaProducerFactory<>(configProps); } @Bean public KafkaTemplate<String, String> kafkaTemplate() { return new KafkaTemplate<>(producerFactory()); } @KafkaListener(topics = "your-topic") public void listen(ConsumerRecord<String, String> record) { // 处理消息的逻辑 } } ``` 4. 最后,你可以在你的应用程序使用Kafka生产者发送消息,或者通过消费者监听Kafka主题并处理接收到的消息。例如,使用`KafkaTemplate`发送消息: ```java @Autowired private KafkaTemplate<String, String> kafkaTemplate; public void sendMessage(String message) { kafkaTemplate.send("your-topic", message); } ``` 这样就可以在Spring Boot使用Kafka了。请注意,在实际使用时,你可能还需要进一步配置Kafka的其他属性,例如消息序列化器、消费者组等,以满足你的需求。同时,还可以根据需要使用Kafka的其他功能,例如消息过滤、事务等。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在springbootkafka进行读写的示例代码](https://download.csdn.net/download/weixin_38572115/12773402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springbootkafka使用](https://blog.csdn.net/Lemon_MY/article/details/129078402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值