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

IT 文章5年前 (2021)发布 小编
0 0 0

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

一、实现服务提供者

第1步:建Module

mscloud下新建cloud-provider-payment8006模块

第2步:改pom

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

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站



    
        mscloud
        com.panziye.springcloud
        1.0-SNAPSHOT
    
    4.0.0

    cloud-provider-payment8006

    
        
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        

        
        
            com.panziye.springcloud
            cloud-api-commons
            ${project.version}
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        

        
            org.projectlombok
            lombok
            true
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

    


第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)

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

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

二、实现服务消费者

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

第1步:建Module

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

第2步:改pom

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



    
        mscloud
        com.panziye.springcloud
        1.0-SNAPSHOT
    
    4.0.0

    cloud-consumer-consul-order80

    
        
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        

        
        
            com.panziye.springcloud
            cloud-api-commons
            ${project.version}
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-actuator
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        

        
            org.projectlombok
            lombok
            true
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

    


第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

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

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)

© 版权声明

相关文章

暂无评论

暂无评论...