SpringBoot集成Kafka

pom.xml引入kafka依赖

		
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.kafkagroupId>
            <artifactId>spring-kafkaartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.kafkagroupId>
            <artifactId>spring-kafka-testartifactId>
        dependency>

application.yml

《Linux之Kafka保姆式详细安装教程》

spring:
  kafka:
    # 这里如果是windows环境连接Linux的kafka需要配置C:\Windows\System32\drivers\etc\hosts文件的node2对应的ip地址,如:192.168.1.100 node1,如果是填的IP地址,则直接输入kafka的ip:port即可。
    bootstrap-servers: node2:9092
    #生产者
    producer:
      #key序列化方式
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      #value序列化方式
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    #消费者
    consumer:
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      #test-consumer-group默认组
      group-id: test-consumer-group

生产者producer往Kafka发送消息

ProducerController
@RestController
public class ProducerController {
	@Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    
	/**
     * 往kafka topic为first发送消息msg
     * @param msg 消息
     */
    @GetMapping({"send"})
    public String hello(String msg) {
        this.kafkaTemplate.send("first", msg);
        return "hello world.";
    }
}
进入到kafka的消费者控制台查看信息是否收到消息

确保kafka已启动,jps查看kafka是否启动

cd /data/kafka_2.12-3.5.0/ && ./bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic first

查看kafka包含哪些topics主题

./bin/kafka-topics.sh --bootstrap-server node1:9092 --list

启动SpringBoot项目调用send接口往kafka发送一条消息,如:localhost:8083/send?msg=“hello”
回到Linux的kafka 消费者控制台,发现消息已经发送过来了。
在这里插入图片描述

消费者获取生产者发送的消息

KafkaConsumer
/**
 * Kafka消费者
 */
@Slf4j
@Configuration
public class KafkaConsumer {

    /**
     * 监听topics主题
     * @param msg 对应主题的生产者传过来的消息内容
     */
    @KafkaListener(topics = "first")
    public void first(String msg){
        log.info("get message: {}", msg);
    }

}

重启SpringBoot项目发送一条消息看看控制台是否打印相应消息。
如:往localhost:8083/send?msg="hello2"发送了一条名为hello2的消息,则消费者会把对应的主题的消息输出到控制台。
在这里插入图片描述

你可能感兴趣的:(#,Spring,Boot,消息队列:rabbitmq,kafka,rocketmq,spring,boot,kafka,后端)