行业资讯 2025年08月6日
0 收藏 0 点赞 378 浏览 6351 个字
摘要 :

文章目录 一、实现服务提供者 第1步:建Module 第2步:改pom 第3步:写yml 第4步:主启动类 第5步:业务类 第6步:测试 二、实现服务消费者 第1步:建Module 第2步:……




  • 一、实现服务提供者
    • 第1步:建Module
    • 第2步:改pom
    • 第3步:写yml
    • 第4步:主启动类
    • 第5步:业务类
    • 第6步:测试
  • 二、实现服务消费者
    • 第1步:建Module
    • 第2步:改pom
    • 第3步:写yml
    • 第4步:主启动类
    • 第5步:业务类
    • 第6步:测试

    这一小节我们通过Consul来实现服务注册中心,具体的流程可参考zookeeper的,我们仍然不管持久层等代码,直接配置环境即可。

    一、实现服务提供者

    第1步:建Module

    mscloud下新建cloud-provider-payment8006模块

    第2步:改pom

    pom中主要将zk的依赖换为consul的依赖,具体如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>mscloud</artifactId>
            <groupId>com.panziye.springcloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>cloud-provider-payment8006</artifactId>
    
        <dependencies>
            <!--   consul    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
    
            <!--  引入自定义的api通用包,可以使用支付Payment等Entity      -->
            <dependency>
                <groupId>com.panziye.springcloud</groupId>
                <artifactId>cloud-api-commons</artifactId>
                <version>${project.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
    </project>
    

    第3步:写yml

    resoures下的application.yml配置如下:

    server:
      port: 8006
    
    spring:
      application:
        name: consul-payment-service
      cloud:
        #consul服务注册中心配置
        consul:
          host: localhost
          port: 8500
          discovery:
            service-name: ${spring.application.name}
    

    第4步:主启动类

    新建PaymentMain8006 主启动类:

    package com.panziye.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class PaymentMain8006 {
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain8006.class,args);
        }
    }
    
    

    第5步:业务类

    我们这里就只新建个PaymentControlelr类:

    package com.panziye.springcloud.controller;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @Slf4j
    public class PaymentControlelr {
        @Value("${server.port}")
        private String serverPort;
        @GetMapping(value = "/payment/consul")
        public String consul(){
            return "payment consul server port:"+serverPort+",随机数:"+ Math.random();
        }
    }
    

    第6步:测试

    我们启动consul和8006服务,浏览器访问http://localhost:8006/payment/consulhttp://localhost:8500/,,发现服务注册成功:
    Consul实现服务注册中心—SpringCloud(H版)微服务学习教程(17)

    Consul实现服务注册中心—SpringCloud(H版)微服务学习教程(17)

    二、实现服务消费者

    服务消费者的实现与zookeeper中的类似,我们步骤如下:

    第1步:建Module

    mscloud下新建cloud-consumer-consul-order80模块

    第2步:改pom

    pom中主要将zk的依赖换为consul的依赖,具体如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>mscloud</artifactId>
            <groupId>com.panziye.springcloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>cloud-consumer-consul-order80</artifactId>
    
        <dependencies>
            <!--   consul    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
    
            <!--  引入自定义的api通用包,可以使用支付Payment等Entity      -->
            <dependency>
                <groupId>com.panziye.springcloud</groupId>
                <artifactId>cloud-api-commons</artifactId>
                <version>${project.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
    </project>
    

    第3步:写yml

    resoures下的application.yml配置如下:

    server:
      port: 80
    
    spring:
      application:
        name: cloud-order-consul-service
      cloud:
        #consul服务注册中心配置
        consul:
          host: localhost
          port: 8500
          discovery:
            service-name: ${spring.application.name}
    

    第4步:主启动类

    新建OrderConsulMain80 主启动类:

    package com.panziye.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class OrderConsulMain80 {
        public static void main(String[] args) {
            SpringApplication.run(OrderConsulMain80.class,args);
        }
    }
    
    

    第5步:业务类

    1)在config在新建ApplicationContextCofig

    package com.panziye.springcloud.config;
    
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    
    @Configuration
    public class ApplicationContextCofig {
        /**
         * 配置RestTemplate
         * @return
         */
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    }
    

    2)controller中新建OrderController

    package com.panziye.springcloud.controller;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    import javax.annotation.Resource;
    
    @RestController
    @Slf4j
    public class OrderController {
        // 注册中心中服务地址-consul中service名称
        public static final String PAYMENT_URL = "http://consul-payment-service";
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("/consumer/payment/consul")
        public String consul(){
            return restTemplate.getForObject(PAYMENT_URL+"/payment/consul",String.class);
        }
    
    }
    
    

    第6步:测试

    再启动OrderConsulMain80,访问浏览器测试:
    1)http://localhost/consumer/payment/consul
    Consul实现服务注册中心—SpringCloud(H版)微服务学习教程(17)
    2)http://localhost:8500/
    Consul实现服务注册中心—SpringCloud(H版)微服务学习教程(17)

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/7822.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号