Java --- springboot3整合kafka

一、消息队列场景

1.1、异步 

 1.2、解耦

 1.3、削峰

1.4、缓冲

二、springboot整合kafka

 导入pom依赖

<dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

 修改配置

spring.kafka.bootstrap-servers=192.168.200.1:9092
#配置序列化
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer

发送消息:

@SpringBootTest
class Boot3KafkaApplicationTests {
    @Autowired
    private KafkaTemplate kafkaTemplate;
    @Test
    void contextLoads() {
        //计时
        StopWatch stopWatch = new StopWatch();
        CompletableFuture[] completableFuture = new CompletableFuture[1000];
        stopWatch.start();
        for (int i = 0; i < 1000; i++) {
            CompletableFuture send = kafkaTemplate.send("timi", "timi1", "haha");
            completableFuture[i] = send;
        }
        CompletableFuture.allOf(completableFuture).join();
        stopWatch.stop();
        //统计花费时间
        long totalTimeMillis = stopWatch.getTotalTimeMillis();
        System.out.println("1000条消息发送时间:"+ totalTimeMillis);
    }
    @Test
    void testKafka(){
        Person person = new Person();
        person.setName("张三");
        person.setAge(12);
        CompletableFuture send = kafkaTemplate.send("timi", "person", person);
        send.join();
    }
}

 创建主题

@Configuration
public class KafkaConfig {
    //创建主题
    @Bean
    public NewTopic topic(){
        return TopicBuilder.name("ax")
                .partitions(1)
                .compact()
                .build();
    }
}

获取消息

@Component
@Log4j2
public class TimiKafkaListener {
    //默认获取最后一条消息
    @KafkaListener(topics = "timi",groupId = "timi")
    public void timiKafka(ConsumerRecord record){
        Object key = record.key();
        Object value = record.value();
        log.info("接收到消息的key {},value:{}",key,value);
    }
    //获取所有消息
    @KafkaListener(groupId = "ya",topicPartitions = {
            @TopicPartition(topic = "timi",partitionOffsets = {
                    @PartitionOffset(partition = "0",initialOffset = "0")
            })
    })
    public void timiKafka2(ConsumerRecord record){
        Object key = record.key();
        Object value = record.value();
        log.info("接收到消息的key2 {},value2:{}",key,value);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
集成Kafka到Spring Boot项目中需要以下步骤: 1. 引入Kafka依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.7.1</version> </dependency> ``` 2. 配置Kafka 在application.yml文件中添加以下配置: ``` spring: kafka: bootstrap-servers: localhost:9092 ``` 其中,bootstrap-servers指定了Kafka的服务地址和端口号。 3. 编写Kafka生产者 创建一个Kafka生产者类,用于向Kafka发送消息: ``` @Service public class KafkaProducerService { @Autowired private KafkaTemplate<String, String> kafkaTemplate; public void sendMessage(String message) { kafkaTemplate.send("test-topic", message); } } ``` 在上面的代码中,KafkaTemplate是Spring提供的用于发送消息的模板类,其中"test-topic"是Kafka中的主题名。 4. 编写Kafka消费者 创建一个Kafka消费者类,用于从Kafka接收消息: ``` @Service public class KafkaConsumerService { @KafkaListener(topics = "test-topic") public void receiveMessage(String message) { System.out.println("Received message: " + message); } } ``` 在上面的代码中,@KafkaListener注解用于指定要监听的Kafka主题,receiveMessage方法用于处理接收到的消息。 5. 测试 在Spring Boot项目中调用KafkaProducerService的sendMessage方法发送消息,可以通过KafkaConsumerService的receiveMessage方法接收到消息。 以上就是在Spring Boot项目中集成Kafka的步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭鸭老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值