【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());
    }
}
相关推荐
葡萄城技术团队1 分钟前
智慧表格(SpreadJS + AI):拥抱 Web 端对话式办公新时代
前端·人工智能
2401_8653825013 分钟前
各省政务信息化项目验收材料清单汇总及差异分析
java·开发语言·数据库
京师20万禁军教头21 分钟前
31面向对象(中级)-方法重写/覆盖(override)
java
许彰午27 分钟前
源码全开放,没人看——一个框架作者的真实经历
java·后端
OpenTiny社区30 分钟前
电商系统集成GenUI SDK实操指南
前端·开源·ai编程
A_nanda31 分钟前
vue实现后端传输逐帧图像数据
前端·javascript·vue.js
YGY顾n凡33 分钟前
我开源了一个项目:一句话创造一个AI世界!
前端·后端·aigc
qq_120840937136 分钟前
Three.js 工程向:动画循环与时间步进稳定性实践
前端·javascript
SamDeepThinking38 分钟前
写了十几年代码,聊聊什么样的人能做好Java开发
java·后端·程序员
凛_Lin~~41 分钟前
安卓实现textview跑马灯效果
android·java