【MQ篇】Spring Boot 整合 Kafka 消息队列

224 阅读1分钟

写在最前

Spring Boot 整合 Kafka

Demo 地址:mingyue-springboot-kafka

1.添加依赖

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

2.修改配置文件

spring:
  kafka:
    # kafka服务地址
    bootstrap-servers: ip:9092
    producer:
      # 生产者消息key序列化方式
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      # 生产者消息value序列化方式
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      # 消费者组
      group-id: test-consumer-group
      # 消费者消息value反序列化方式
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      # 消费者消息value反序列化方式
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

3.添加消费者

import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.annotation.KafkaHandler;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

/**
 * 消费者
 * @author Strive
 * @date 2022/4/29 10:38
 */
@Component
@Slf4j
@KafkaListener(
    topics = {"mingyue"},
    groupId = "test-consumer-group")
public class MsgConsumer {

  @KafkaHandler
  public void receive(String message) {
    log.info("消费者接收到的消息是:" + message);
  }
}

4.添加生产者

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;

/**
 * 生产者
 * @author Strive
 * @date 2022/4/29 10:39
 */
@RestController
public class MsgProducerController {

  @Autowired private KafkaTemplate kafkaTemplate;

  @RequestMapping("/send")
  public void send(String message) {
    kafkaTemplate.send("mingyue", message);
  }
}

5.测试

接口方法:http://localhost:8080/send?message=111

后台日志:

11:06:21.920  INFO 18036 --- [ntainer#0-0-C-1] c.c.mingyue.kafka.consumer.MsgConsumer   : 消费者接收到的消息是:111