首页 > 其他分享 >SpringBoot3-第九篇(整合消息服务)

SpringBoot3-第九篇(整合消息服务)

时间:2024-12-29 17:29:11浏览次数:7  
标签:spring kafkaTemplate kafka SpringBoot3 整合 第九篇 public 消息

系列文章目录

SpringBoot3-第一篇(快速入门)
SpringBoot3-第二篇(Web开发)
SpringBoot3-第三篇(数据访问)
SpringBoot3-第四篇(基础特性)
SpringBoot3-第五篇(核心原理)
SpringBoot3-第六篇(整合NoSQL)
SpringBoot3-第七篇(整合接口文档)
SpringBoot3-第八篇(整合远程调用)
SpringBoot3-第九篇(整合消息服务)


文章目录


https://kafka.apache.org/documentation/

1. 消息队列-场景

1.1 异步

在这里插入图片描述

1.2 解耦

在这里插入图片描述

1.3 削峰

在这里插入图片描述

1.4 缓冲

在这里插入图片描述


2. 消息队列-Kafka

2.1 消息模式

在这里插入图片描述

2.2 Kafka工作原理

在这里插入图片描述

2.3 SpringBoot整合

参照:https://docs.spring.io/spring-kafka/reference/

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

配置

spring.kafka.bootstrap-servers=172.20.128.1:9092

修改C:\Windows\System32\drivers\etc\hosts文件,配置8.130.32.70 kafka

2.4 消息发送

@SpringBootTest
class Boot07KafkaApplicationTests {

    @Autowired
    KafkaTemplate kafkaTemplate;
    @Test
    void contextLoads() throws ExecutionException, InterruptedException {
        StopWatch watch = new StopWatch();
        watch.start();
        CompletableFuture[] futures = new CompletableFuture[10000];
        for (int i = 0; i < 10000; i++) {
            CompletableFuture send = kafkaTemplate.send("order", "order.create."+i, "订单创建了:"+i);
            futures[i]=send;
        }
        CompletableFuture.allOf(futures).join();
        watch.stop();
        System.out.println("总耗时:"+watch.getTotalTimeMillis());
    }

}
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyBean {

    private final KafkaTemplate<String, String> kafkaTemplate;

    public MyBean(KafkaTemplate<String, String> kafkaTemplate) {
        this.kafkaTemplate = kafkaTemplate;
    }

    public void someMethod() {
        this.kafkaTemplate.send("someTopic", "Hello");
    }

}

2.5 消息监听

@Component
public class OrderMsgListener {

    @KafkaListener(topics = "order",groupId = "order-service")
    public void listen(ConsumerRecord record){
        System.out.println("收到消息:"+record); //可以监听到发给kafka的新消息,以前的拿不到
    }

    @KafkaListener(groupId = "order-service-2",topicPartitions = {
            @TopicPartition(topic = "order",partitionOffsets = {
                    @PartitionOffset(partition = "0",initialOffset = "0")
            })
    })
    public void listenAll(ConsumerRecord record){
        System.out.println("收到partion-0消息:"+record);
    }
}

2.6 参数配置

消费者

spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
spring.kafka.consumer.properties[spring.json.value.default.type]=com.example.Invoice
spring.kafka.consumer.properties[spring.json.trusted.packages]=com.example.main,com.example.another

生产者

spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.producer.properties[spring.json.add.type.headers]=false

2.7 自动配置原理

kafka 自动配置在KafkaAutoConfiguration

  1. 容器中放了 KafkaTemplate 可以进行消息收发
  2. 容器中放了KafkaAdmin 可以进行 Kafka 的管理,比如创建 topic 等
  3. kafka 的配置在KafkaProperties
  4. @EnableKafka可以开启基于注解的模式

标签:spring,kafkaTemplate,kafka,SpringBoot3,整合,第九篇,public,消息
From: https://blog.csdn.net/qq_43048957/article/details/144758294

相关文章

  • foobar2000与ffmpeg整合方法与步骤
    为了在foobar2000中使用ffmpeg进行音频解码,首先您需要下载适合您CPU架构的ffmpeg解码器。如果不确定选择哪款解码器,或者没有找到适合您CPU架构的版本,可以选择通用解码器。下载完成后的文件通常包含多个可执行文件,您需要在foobar2000安装目录下创建一个文件夹,例如命名为“FFmpeg64......
  • 详解 Spring Boot 2.7.18 与 MyBatis PageHelper 的整合步骤
    一、添加依赖在pom.xml文件中添加必要的依赖:<dependencies><!--SpringBootStarterWeb--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>&l......
  • Struts2+Spring4+Hibernate4+Maven+EasyUI整合开发 员工管理系统
    packagecom.java1234.action;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.PrintWriter;importjava.util.A......
  • SSM整合
    ssm框架【springmvcspringmybatis】。其实就是spring和mybatis的整合。spring的整合mybatis的配置文件到自己的配置文件中。1创建表createdatabasetest03;usetest03;createtabletbl_student(idintprimarykeyauto_incrementcomment'主键',namevarch......
  • 大学微积分 AB 第六单元-3:变革的整合与积累(微积分基本定理与定积分、不定积分和不定
          微积分基本定理与定积分 例子: 不定积分和不定导数 例子: 例子2: 例子: 例子: ......
  • Spring MVC Thymeleaf Shiro Dialect 整合
    SpringMVCThymeleafShiroDialect整合|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|------------......
  • 开源数字人直播DH_live web整合包免训练使用教程
    资源导航首页项目地址基于开源项目:DH_live做的web交互系统主要实现:免训练数字人视频制作和实时语音数字人可搭配一些直播场控软件的语音驱动数字人进行直播  整合包下载「数字人(可直播用+数字人视频制作)」链接:https://pan.quark.cn/s/2e06a0249917优化内容:......
  • 最新Stable Diffusion整合包安装,全新加速、解压即用、防爆显存三分钟入门
    StableDiffusion出来已经很长一段时间了,网上其实已经有很多很多教程教如何安装了,但是由于网上太多的教程,也不知道哪个更好,且有的伙伴可能也是没找到合适的,也有的伙伴暂时还没找到。在StableDiffusion刚出来不久,我也尝试了多种安装方式,也有试过google、腾讯云一键安装脚本......
  • 基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
    环境说明:Ubuntu:v24.04.1LTSJekins:v2.491Docker:v27.4.0Gogs:v0.14.0-可选。可以选择Github,Gitlab或者Gitea等Git仓库,不限仓库类型1Panel:v1.10.21-lts-可选。这里主要用于查看和管理Docker容器Jenkins实现参数化构建这里通过Docker进行安装【系统管理】【插件管理】......
  • 解决 高版本SpringBoot整合Swagger 启动报错Failed to start bean ‘documentationPlu
    解决高版本SpringBoot整合Swagger启动报错Failedtostartbean‘documentationPluginsBootstrapper‘问题|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|A......