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);
    }

重要信息

相关推荐
minstbe4 小时前
IC设计私有化AI助手实战:基于Docker+OpenCode+Ollama的数字前端综合增强方案(进阶版)
人工智能·python·语言模型·llama
GinoInterpreter5 小时前
什么是翻译的去中心化?
人工智能·自然语言处理·去中心化·区块链·机器翻译·机器翻译模型·机器翻译引擎
码农小白AI5 小时前
IACheck AI报告文档审核:高端制造合规新助力,保障标准引用报告质量
大数据·人工智能·制造
_YiFei6 小时前
哪个降论文AI率工具最好用?
人工智能·深度学习·神经网络
放下华子我只抽RuiKe56 小时前
机器学习全景指南-直觉篇——基于距离的 K-近邻 (KNN) 算法
人工智能·gpt·算法·机器学习·语言模型·chatgpt·ai编程
kisshuan123966 小时前
[特殊字符]【深度学习】DA3METRIC-LARGE单目深度估计算法详解
人工智能·深度学习·算法
sali-tec6 小时前
C# 基于OpenCv的视觉工作流-章33-Blod分析
图像处理·人工智能·opencv·算法·计算机视觉
老星*6 小时前
Trae-cn一句话安装OpenClaw:AI智能体框架快速部署指南
人工智能·编辑器
昨夜见军贴06166 小时前
IACheck结合AI报告审核:轨道扣件横向阻力检测报告确保无误差
人工智能
Qt学视觉6 小时前
AI2-Paddle环境搭建
c++·人工智能·python·opencv·paddle