【Java Web】Spring整合Kafka

  • 引入依赖
    • spring-kafka
  • 配置Kafka
    • 配置server/consumer
  • 访问Kafka
    • 生产者
      • kafkaTemplate.send(topic,data)
    • 消费者
      • @KafkaListenner(topics={"test"})
      • public void handleMessage(ConsumerRecord record) { }

application.properties配置:

java 复制代码
# kafka
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=community-consumer-group
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=3000

测试代码:

java 复制代码
package com.nowcoder.community;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class KafkaTests {

    @Autowired
    private KafkaProducer kafkaProducer;
    @Test
    public void testKafka(){
        kafkaProducer.sendMessage("test","你好");
        kafkaProducer.sendMessage("test","兄弟");

        try {
            Thread.sleep(1000*10);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

@Component
class KafkaProducer{

    @Autowired
    private KafkaTemplate kafkaTemplate;

    public void sendMessage(String topic, String content){
        kafkaTemplate.send(topic, content);
    }
}

@Component
class KafkaConsumer{

    @KafkaListener(topics = {"test"})
    public void handleMessage(ConsumerRecord record){
        System.out.println(record.value());
    }
}
相关推荐
扶苏100215 小时前
vue使用event.dataTransfer实现A容器数据拖拽复制到到B容器
前端·vue.js·chrome
David凉宸15 小时前
Vue 3 项目的性能优化策略:从原理到实践
前端·vue.js·性能优化
HAPPY酷15 小时前
构造与析构:C++ 中对象的温柔生灭
java·jvm·c++
小马_xiaoen16 小时前
Proxy 与 Reflect 从入门到实战:ES6 元编程核心特性详解
前端·javascript·ecmascript·es6
hoiii18716 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
lang2015092816 小时前
Java JSR 250核心注解全解析
java·开发语言
czhc114007566316 小时前
协议 25
java·开发语言·算法
逆光的July16 小时前
如何解决超卖问题
java
落花流水 丶16 小时前
Java 集合框架完全指南
java
lang2015092816 小时前
Java WebSocket API:JSR-356详解
java·python·websocket