第 12 讲 SpringBoot集成Kafka消息中间件

第十二课 SpringBoot集成Kafka消息中间件

1. kafka简介

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

2. linux下启动kafka

  • 2.1 百度网盘下载

链接:https://pan.baidu.com/s/1wP3Ki3PogmAQCnSX-cK1kA
提取码:tuyy

  • 2.2 Linux下Kafka环境的搭建

  • 2.3 启动zookeeper

    • 进入Zookeeper解压包下:/home/tools/zookeeper-3.4.12/bin,运行以下命令,启动zookeeper。
./zkServer.sh start  //启动zookeeper

在这里插入图片描述

  • 2.4 启动kafka
./bin/kafka-server-start.bat ./config/server.properties

在这里插入图片描述

创建TOPIC
./kafka-topics.sh --create --zookeeper 192.168.0.111:2181 --replication -factor 1 --partitions 1 --topic mytopic 

创建生产者:
./kafka-console-producer.sh --broker-list 192.168.0.111:9092 --topic mytopic

创建生产者:
./kafka-console-consumer.bat --zookeeper 192.168.0.111:2181 --topic mytopic 

查看topic列表:
./kafka-topics.bat --list --zookeeper 192.168.0.111:2181

3. SpringBoot集成kafka

3.1 引入依赖: pom.xml

<!--SpringBoot集成kafka-->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

3.2 配置kafka:application.yml

spring:
  kafka:
    bootstrap-servers: 192.168.0.111:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: test
      enable-auto-commit: true
      auto-commit-interval: 1000
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

3.3 编写消息生成类:KafkaProducerController

package com.springboot.kafka.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description:
 * @Author: zrblog
 * @CreateTime: 2018-09-27 07:52
 * @Version:v1.0
 */
@RestController
@RequestMapping("/kafka")
public class KafkaProducerController {

    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;

    @RequestMapping("/send")
    public String send(String string) {
        kafkaTemplate.send("mytopic", string);
        return "KafkaProducerController:Kafka发送消息成功!";
    }
}

3.4 编写消息消费类:KafkaConsumerController

package com.springboot.kafka.controller;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

/**
 * @Description:
 * @Author: zrblog
 * @CreateTime: 2018-09-27 07:52
 * @Version:v1.0
 */
@Component
public class KafkaConsumerController {

    @KafkaListener(topics = {"mytopic"})
    public void listen(ConsumerRecord<?, ?> record) {

        System.out.printf("topic = %s, offest = %d, value = %s\n",record.topic(),record.offset(),record.value());
    }
}

3.5 测试:

访问: http://localhost:8080/kafka/send?string=%E4%BD%A0%E5%A5%BD

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中集成Kafka,需要以下步骤: 1. 引入Kafka依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.8.0</version> </dependency> ``` 2. 配置Kafka连接信息 在application.properties或者application.yml文件中添加以下配置信息: ```properties # Kafka连接信息 spring.kafka.bootstrap-servers=localhost:9092 # 消费者组ID spring.kafka.consumer.group-id=my-group # 序列化方式 spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer ``` 3. 创建生产者 创建Kafka生产者需要使用KafkaTemplate类,代码如下: ```java @Autowired private KafkaTemplate<String, String> kafkaTemplate; public void sendMessage(String topic, String message) { kafkaTemplate.send(topic, message); } ``` 4. 创建消费者 创建Kafka消费者需要使用@KafkaListener注解,代码如下: ```java @KafkaListener(topics = "my-topic", groupId = "my-group") public void consume(String message) { System.out.println("Received message: " + message); } ``` 5. 发送和接收消息 在需要发送消息的地方调用sendMessage方法即可,例如: ```java sendMessage("my-topic", "Hello, Kafka!"); ``` 当Kafka接收到消息后,会自动调用@KafkaListener注解的方法进行消费,例如: ```java Received message: Hello, Kafka! ``` 以上就是在Spring Boot中集成Kafka的基本步骤,需要注意的是,在实际应用中还需要考虑一些高级特性,例如消息确认、消息重试、消息过滤等,以及Kafka集群的配置和管理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值