SpringCloud Bus消息总线

spring cloud 中消息总线(bus)使用 spring cloud bus使用及相关背景知识。 阅读详情

SpringCloud Bus消息总线

在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例,它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线。 

SpringCloud中也有对应的解决方案,SpringCloud Bus 将分布式的节点用轻量的消息代理连接起来,可以很容易搭建消息总线,配合SpringCloud config 实现微服务应用配置信息的动态更新。

 

消息总线其实通过消息中间主题模式,他使用广播消息的机制被所有在注册中心微服务实例进行监听和消费。以广播形式将消息推送给所有注册中心服务列表


消息代理属于中间件。设计代理的目的就是为了能够从应用程序中传入消息,并执行一些特别的操作。开源产品很多如ActiveMQ、Kafka、RabbitMQ、RocketMQ等
目前springCloud仅支持RabbitMQ和Kafka。本文采用RabbitMQ实现这一功能。

 

图示:

  

 

 通过客户端去通知每个服务 更新配置文件

  

升级  通过消息总线的方式:

 

 

 

 消息总线框架底层是MQ实现的,引入相应的jar包,底层框架实现好了,每个服务里面引入了相应的jar包后,自动创建队列 绑定交换机等等

 配置文件的应用场景就很符合。

 

 环境搭建:

       

 每个服务对于分布式配置中心来说是 client端

 配置文件环境 dev test  pre prd

 配置文件命名规范  client服务名称(注册中心名称)-版本.yml 

 

创建好这个文件

 

 

互联网项目场景中的配置文件 不是存放在本底的  是存放在远程服务器

写在本地 需要重启服务器  !!

下面开始搭建分布式配置中心 SpringCloude  组件  Config

   

1、配置文件存放在git 或者 svn

2、搭建分布式配置中心服务

3、客户端读取分布式配置中心服务

 

 configServer端:

配置文件:

  pom:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.toov5</groupId>
  <artifactId>SpringCloud-eureka-server</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <!-- 管理依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!--SpringCloud eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
            <!-- hystrix断路器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        
    </dependencies> 
    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
  
</project>

yml:

###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka
spring:
  application:
    ####注册中心应用名称
    name: config-server
  cloud:
    config:
      server:
        git:
          ###git环境地址
          uri: https://gitee.com/toov5/distributed_configuration_file.git
          ####搜索目录
          search-paths:
            - Test  
      ####读取分支      
      label: master
####端口号      
server:
  port: 8888

启动:

package com.toov5.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class AppServerConfig {
   
    public static void main(String[] args) {
        SpringApplication.run(AppServerConfig.class, args);
    }
}

启动Eureka后启动 configServer

 

 访问地址: http://127.0.0.1:8888//appConfig-dev.yml

 

Client端:

pom:

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.toov5</groupId>
  <artifactId>SpringCloud_config_client</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>
        <!-- SpringBoot整合eureka客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>

    </dependencies>
    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
  
</project>

Controller:

package com.toov5.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {
     @Value("${userAge}")  //配置中心的 我们这个字段在本地没有配置
     private String userAge;
     
     @RequestMapping("/getUserAge")
     public String getUerAge() {
          return userAge;
     }
}

启动类:

package com.toov5.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class AppClientConfig {
  public static void main(String[] args) {
    SpringApplication.run(AppClientConfig.class, args);
}
}

yml:

对应命名规范去配置!

spring:
  application: 
    ####注册中心应用名称    对应命名规范去配置 appConfig-dev.yml
    name:  appConfig
  cloud:
    config:
    ####读取后缀
      profile: dev   #对应命名规范去配置
      ####读取config-server注册地址
      discovery:
        service-id: config-server   ##服务的名字
        enabled: true
#####    eureka服务注册地址    
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka    
server:
  port: 8882  

访问结果:

如果此时 修改了配置文件,刷新出来的还是不变的!缓存到当前的jvm中了  重启client端就OK了   可以做定时刷新

 

升级: 不重启服务器自动刷新

 1.手动通知刷新单个jvm值

 2. 消息总线通知整个微服务刷新

 

1. 通过监控中心

   手动actuator端点刷新数据

   引入mavn 到client   

<!-- actuator监控中心 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

 

 yml

   开启监控服务

  

management:
  endpoints:
    web:
      exposure:
        include: "*"

 此时的yml:

spring:
  application: 
    ####注册中心应用名称    对应命名规范去配置 appConfig-dev.yml
    name:  appConfig
  cloud:
    config:
    ####读取后缀
      profile: dev   #对应命名规范去配置
      ####读取config-server注册地址
      discovery:
        service-id: config-server   ##服务的名字
        enabled: true
#####    eureka服务注册地址    
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka    
server:
  port: 8882
  
  
#开启所有服务端点权限  
management:
  endpoints:
    web:
      exposure:
        include: "*"
  

 

然后Controller 加上 刷新的注解   @RefreshScope

package com.toov5.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class IndexController {
     @Value("${userAge}")  //配置中心的 我们这个字段在本地没有配置
     private String userAge;
     
     @RequestMapping("/getUserAge")
     public String getUerAge() {
          return userAge;
     }
}

对应的值 不用重启就可以刷新了

 启动后:修改git的文件值

发送post请求:

http://127.0.0.1:8882/actuator/refresh

 

有个缺点,如果configClient做个集群

如要去刷新每个 服务的值!  postman 搞一遍

 

升级:这样就需要消息总线了!

 

   

 SpringCloud整合rabbitmq 和 kafka

 本文采用的是rabbitmq去作为案例讲解:

  rabbitmq 的加交换机有四种: fanout  direct  topic  head

 

  在这个体系中  微服务有多少个 就会在MQ中创建多少个队列,当手动刷新一个服务时候,会通过rabbitmq 去把消息同时发给交换机,然后通过交换机发送给其他的微服务 。

 

 

 环境的搭建:

   引入maven: bus的核心jar包

   client和servler端都需要引入   

    <!--核心jar包 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
        <!-- actuator监控中心 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

如果报错添加:

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-bus-parent</artifactId>
                <version>2.0.0.RC2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

客户端需要yml开启bus刷新:client端

###开启bus刷新
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh  

 同时需要配置mq的连接信息:

此时的client端yml:

spring:
  rabbitmq:
  ####连接地址
    host: 192.168.91.6
   ####端口号  
    port: 5672
   ####账号
    username: admin
   ####密码 
    password: admin
   ### 地址  主机独立的virtualhost
    virtual-host: /admin_toov5
  application: 
    ####注册中心应用名称    对应命名规范去配置 appConfig-dev.yml
    name:  appConfig
  cloud:
    config:
    ####读取后缀
      profile: dev   #对应命名规范去配置
      ####读取config-server注册地址
      discovery:
        service-id: config-server   ##服务的名字
        enabled: true
#####    eureka服务注册地址    
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka    
server:
  port: 8882
  
###开启bus刷新
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

server:

###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka
spring:
  rabbitmq:
  ####连接地址
    host: 192.168.91.6
   ####端口号  
    port: 5672
   ####账号
    username: admin
   ####密码 
    password: admin
   ### 地址  主机独立的virtualhost
    virtual-host: /admin_toov5
  application:
    ####注册中心应用名称
    name: config-server
  cloud:
    config:
      server:
        git:
          ###git环境地址
          uri: https://gitee.com/toov5/distributed_configuration_file.git
          ####搜索目录
          search-paths:
            - Test  
      ####读取分支      
      label: master
####端口号      
server:
  port: 8888

###开启bus刷新
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

 

底层会帮助创建 mq队列 主题  两个client  一个 server

 

 

 

 

 访问一个接口  8882 的,其他的服务8883也会跟着改了!

http://127.0.0.1:8882/actuator/bus-refresh

 

就是玩了个  yml+jar包 而已

 

SpringCloud之Bus消息总线 目录`bus` 简介`bus` 工作架构 bus 简介 从 上一篇 文章可以得知 config client 服务从 config server 端获取自己对应的配置文件,但是目前的问题是:当远程 git 仓库配置文件发生改变时,每次都是需要重启 config client 服务,如果有上百上千个微服务呢? 我想我们不会一个个去重启每个微服务,也就是说如何让 config server 端通知到 config client 端? 即 config client 端如何感知到配置发生更新? 这时候就该 bus 阅读详情

相关推荐

SpringCloud: 消息总线Spring Cloud Bus

  ws:Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。 一、准备工作 本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp ;这就是说我们...

黎明哥的博客 267

Springcloud-消息总线-Bus

SpringCloud消息总线-Bus

TOMORROW6COME的博客 1795

从医疗成像到工业检测:CMOS图像传感器NIR技术的最新应用案例解析

本文深入解析了CMOS图像传感器NIR技术在医疗成像和工业检测中的最新应用案例。通过提升量子效率至70%,NIR技术实现了血管可视化、材料缺陷检测等突破性进展,显著提高了医疗诊断精度和工业质检效率。文章还探讨了系统集成关键考量和前沿发展趋势。

weixin_30879169的博客 90

Spring Cloud Bus简述及使用

简介 Spring Cloud Bus 是用轻量的消息代理将分布式的节点(服务)连接起来,可以用于广播配置文件的更改或者服务的监控管理。也就是消息总线可以为微服务做监控,也可以实现应用程序之间的相互通讯。 Spring Cloud Bus可选的消息代理有RabbitMQ和Kafka。 使用Bus之后的框架: 准备工作: Erlang下载 RabbitMQ下载 (安装步骤自行百度) Spring Cloud Bus底层原理是基于RabbitMQ实现的,默认使用本地的消息队列服务。RabbitMQ需要Erl

weixin_44078232的博客 781

从零构建AI辅助逆向分析环境:JADX-MCP与LLM的实战集成指南

本文详细介绍了如何从零构建AI辅助逆向分析环境,通过集成JADX-MCP与LLM技术,提升Android应用逆向工程效率。文章涵盖环境搭建、插件安装、MCP服务器配置及实战案例分析,帮助开发者快速掌握AI在代码理解、漏洞挖掘和自动化文档生成中的应用。

weixin_27875131的博客 839

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

SpringCloud微服务实战之消息总线BUS-RabbitMQ

Spring Cloud Bus支持两款消息中间件:RabbitMQ、Kafka。 一、RabbitMQ实现消息总线 1、RabbitMQ简介 RabbitMQ是实现了高级消息对列协议(AMQP)的开源消息代理软件,它是用高性能、可伸缩而闻名的Erlang语言编写而成的,其集群和故障转移是构建在开放电信平台框架上的。 2、RabbitMQ的基本概念 Broker:可以理解为消息队列服务器实体,

上善若水 9965

SAP FICO资产明细表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO资产明细表开发说明书(包括源代码,测试样例及FS)

我好像病了的博客 1469

干货|Spring Cloud Bus 消息总线介绍

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33889665的博客 990

Vue3 - [兼容PC和手机H5] 详细监听浏览器刷新 / 关闭 / 前进后退事件,用户点击关闭和刷新页面前 “拦截“ 操作并弹出提示框(实时监听用户关闭或刷新网页,触发时文字提醒并执行自定义操作)

vue3监听页面关闭和刷新,vue3中如何监听页面刷新和关闭事件,vue3中监听浏览器窗口关闭事件,并在窗口关闭进行操作,vue3怎么只在某个页面监听,其他页面不监听,vue3监听刷新和关闭怎么离开页面时注销释放,vue3怎么阻止浏览器前进和后退并提示,页面跳转离开后依旧可以监听到刷新和关闭,vue3怎么知道用户关闭了网页,vue3如何监听刷新网页操作并截断,vue3移动端手机h5网页手机网站监听浏览器刷新关闭,vue3当页面关闭或刷新时怎么提示用户离开不保存数据,vue3项目监听浏览器窗口或标签页关闭,并

🏆 前端领域优质创作者 1万+

rk3399开发环境的介绍

由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。

朝气蓬勃 711

【spring cloud】(六)消息总线——springcloud Bus

各位小伙伴们大家好,欢迎来到这个小扎扎的spring cloud专栏,在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛

扎哇太枣糕的笔记博客 2315

深入Netflix影片分类数据抓取的Python爬虫实战:反反爬机制绕过与Playwright应用全解析

技术工具用途Playwright控制真实浏览器模拟用户行为开发语言asyncio异步调度浏览器任务pandas数据处理和导出sqlite3本地数据库存储支持随机UA模拟,增强反爬能力为什么选择 Playwright?✅ 支持多浏览器(Chromium、Firefox、WebKit)✅ 原生支持 Python 异步编程✅ 提供截图、滚动模拟、验证码处理等高级功能✅ 反爬能力强,模拟真实用户访问。

2201_76125261的博客 1239

springcloud下的微服务-消息总线spring cloud bus

参考 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus) springcloud(九):配置中心和消息总线(配置中心终结版) Config Server——使用Spring Cloud Bus自动刷新配置 Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Sprin...

ahaha413525642的博客 1675

【DDR5 PCB走线SI/PI仿真调试】详细全攻略

问题场景发现症状优化措施过孔Stub效应TDR波形尖峰,信号反射严重使用盲孔,背钻减少Stub,降低Via数量串扰过大眼图闭合,误码率增加增加走线间距,插入地线隔离,减少平行长度电源阻抗过高PDN谐振导致纹波大多频率去耦,靠近电源引脚布置多档电容,合理分层信号时序失配优化走线长度匹配,避免信号走线跨层跳变DDR5设计不仅是硬件的挑战,更是仿真能力的考验。掌握SI/PI仿真,理解信号背后的物理本质,才能真正把握高速接口的“灵魂”!

weixin_43199439的博客 987

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

spring cloud bus_一文透析SpringCloud,关于Bus消息总线,总算梳理清楚了

什么是消息总线消息代理中间件构建一个共用的消息主题让所有微服务实例订阅,当该消息主题产生消息时会被所有微服务实例监听和消费。消息代理又是什么?消息代理是一个消息验证、传输、路由的架构模式,主要用来实现接收和分发消息,并根据设定好的消息处理流来转发给正确的应用。它在微服务之间起到通信调度作用,减少了服务之间的依赖。什么是 Spring Cloud BusSpring Cloud Bus 是 Spri...

weixin_39599097的博客 124

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringCloud:Spring Cloud Bus 消息总线

Spring Cloud Bus Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Spring bus的一个核心思想是通过分布式的启动器对spring boot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道,同样特性的设置(有些取决于通道的设置)在更多通道的文档中。 大家可以将它理解为管理和传播所有分布式项目中的消息既可,其实本质是利用了MQ的广播机制在分布式的系统中传播.

m0_46413295的博客 157

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

spring cloud bus_SpringCloud 消息总线 bus

消息总线1、概述使用SpringCloud Bus配和Spring Cloud Config使用实现配置的动态刷新Bus只支持消息处理:RabbitMQ和Kafaka。能干嘛能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、时间推送等,也可以当做微服务间的通信通道。什么是总线在微服务架构的系统中,通常会使用轻呈级的消息代理来构建一个共用的消息主题,并让系统中所有微...

weixin_39843677的博客 81

SpringCloud Hoxton——Bus服务消息总线

SpringCloud Hoxton——Bus服务消息总线

贝尔摩德苦艾酒 6892

【SpringCloud】【Hoxton】Bus消息总线

1 Spring Cloud Bus 简介 Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Spring bus的一个核心思想是通过分布式的启动器对spring boot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道,同样特性的设置(有些取决于通道的设置)在更多通道...

qq_34125999的博客 5573

Spring Cloud 学习笔记之——10 SpringCloud Bus 消息总线

Spring Cloud 之 SpringCloud Bus

qq_38777021的博客 2621

《深入浅出SpringCloud》Spring Cloud Bus 消息总线

消息总线 Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令,本文将对其用法进行详细介绍。 Spring Cloud Bus 简介 我们通常会使用消息代理来构建一个主题,然后把微服务架构中的所有服务都连接到这个主题上去,当我们向该主题发送消息时,所有订阅该主题的服务都会收到消息并进行消费。使用 Spring Cloud Bus 可以方便地构建起这套机制,所以 Spring Cloud Bus 又被称为消息总线

ysj_2021的博客 207

SpringCloud Bus 消息总线

SpringCloud Bus 消息总线

积少成多 451
上一篇: Elasticsearch6.0简介入门介绍
下一篇: Spring Cloud Stream消息总线
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值