Spring Boot 整合 Kafka

项目目录结构

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Spring Kafka Starter -->
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

kafka-provider

  • application.yml

    server:
      port: 10001
    spring:
      kafka:
        bootstrap-servers: localhost:9092
        producer:
          key-serializer: org.apache.kafka.common.serialization.StringSerializer
          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
          group-id: test-consumer-group
    
  • service

    @Service
    public class ProviderServiceImpl {
        private static final String TOPIC_NAME = "dragon-topic";
        @Resource
        private KafkaTemplate<String, String> kafkaTemplate;
    
        public String sendMsg(String info) {
            kafkaTemplate.send(TOPIC_NAME,info);
            return "发送成功";
        }
    }
    
    @RestController
    @RequestMapping("/provider")
    @RequiredArgsConstructor
    public class ProviderController {
        private final ProviderServiceImpl providerService;
        @GetMapping
        public String providerApi() {
            return providerService.sendMsg("莫等闲,白了少年头,空悲切。");
        }
    }
    

启动类

@SpringBootApplication
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class, args);
    }
}

kafka-consumer

  • kafka-listener

    @Component
    public class KafkaListener {
        private static final Logger log = LoggerFactory.getLogger(KafkaListener.class);
        private static final String TOPIC_NAME = "dragon-topic";
    
        @org.springframework.kafka.annotation.KafkaListener(topics = TOPIC_NAME)
        public void receive(String msg) {
            log.info("接收到消息:{}",msg);
        }
    }
    
  • application.yml

    server:
      port: 10002
    spring:
      kafka:
        bootstrap-servers: localhost:9092
        producer:
          key-serializer: org.apache.kafka.common.serialization.StringSerializer
          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
          group-id: test-consumer-group
    

启动类

@SpringBootApplication
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class, args);
    }
}
posted @   DAawson  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示