SpringBoot使用Kafka生产者、消费者

@TOC

依赖

java 复制代码
<!--kafka-->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>xxx</version>
</dependency>

配置文件

java 复制代码
spring:
  kafka:
    producer:
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
    bootstrap-servers: 192.168.20.75:9907

kafka:
  spark:
    task:
      topic: platform-model-spark-topic1

生产者

java 复制代码
方法一:添加@RunWith(SpringRunner.class)、@SpringBootTest(classes = DataComputingModelApplication.class)实现初始化配置注入kafkaTemplate,调用send()
@Autowired
private KafkaTemplate kafkaTemplate;

    @Test
    public void kafkaSend() {
        final ProducerRecord<String, String> record = new ProducerRecord("test20201228", "{\"key\":\"27\"}");
        kafkaTemplate.send(record);
        log.info("------------send success!----------------");
    }
    
方法二:不需要注解@RunWith、@SpringBootTest,但是初始化Properties,同样调用send()
@Test
    public void kafkaSend2() {
        Properties props = new Properties();
        props.put("bootstrap.servers", "192.168.20.75:9907");
        props.put("key.serializer", StringSerializer.class);
        props.put("value.serializer", StringSerializer.class);
        KafkaProducer<String,String> producer = new KafkaProducer<>(props);
        ProducerRecord record = new ProducerRecord<String, String>("test20201228", "key", "{\"key\":\"20\"}");
        producer.send(record);
        log.info("------------send success!----------------");
        producer.close();
    }

消费者

==说明: ① Topic主题用来区分不同类型的消息 ② GroupId用来解决同一个Topic主题下重复消费问题,比如一条消费需要多个消费者接收到,就可以通过设置不同的GroupId实现,实际消息是存一份的,只是通过逻辑上设置标识来区分,系统会记录Topic主题下--》GroupId分组下--》partition分区下的offsert,来标识是否消费过。==

java 复制代码
@KafkaListener(topics = "big_data_task_state", groupId = "bigDataTaskState")
    public void taskStateConsumer(String msg) {
        log.info("----receive:{}----", msg);
    }

重要信息

相关推荐
玩美数据几秒前
2026全球出海市场研究TOP5:深度行业洞察与高效供应商网络塑造市场竞争力
大数据·人工智能
中科岩创8 分钟前
全栈本地化专属部署架构,服务智慧矿山信息化安全建设!
大数据·人工智能·物联网
数智前线9 分钟前
Forrester最新报告发布:OceanBase成唯一入选中国厂商
人工智能
葡萄城技术团队9 分钟前
AI 不会淘汰电子表格,反而会让电子表格成为 AI 操作系统
前端·人工智能
monsion10 分钟前
AG-UI 协议详解:Agent 与用户之间缺失的那一层
人工智能·ui·个人开发
Token炼金师13 分钟前
千卡月崩五次:loss spike、硬件故障、checkpoint 与断点续训 —— 训练可靠性的生死线
人工智能·深度学习·llm
有Li15 分钟前
通过渐进式域变换实现组织分类的无监督单域泛化文献速递/基于多模态的医学影像分割与理解
人工智能·学习·分类·数据挖掘·文献·医学生
Token炼金师17 分钟前
指令的塑形:从野生语言模型到听话助手 —— 监督微调 SFT 全链路
人工智能·深度学习·llm
新知图书18 分钟前
多模态智能体开发工具链推荐(IDE/调试工具/日志工具)
人工智能·agent·多模态·ai agent·智能体
双翌视觉21 分钟前
当光纤端面遇上AI算力:精密检测的光学成像技术与应用
人工智能·视觉检测